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
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
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
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
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
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
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
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
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
Mathieu Duponchelle
ad49ae42f7
docs: mark more types as plugin API
2020-06-23 12:10:19 -04:00
Seungha Yang
e75049eb84
nvh264sldec: Fix wrong scaling list matrix scan order
...
Quatization matrix of NVDEC should be raster scan order but
h264parser stores it in zig-zag scan order. We need to convert
the matrix.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1290 >
2020-05-23 01:06:28 +09:00
Víctor Manuel Jáquez Leal
d2aae6bb96
codecs: h264decoder: ref pic lists as decode_slice parameters
...
Pass reference picture lists to decode_slice() vmethods
Change gstv4l2codech264dec and gstnvh264dec accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238 >
2020-05-19 16:57:09 +00:00
Tim-Philipp Müller
9539eecf20
nvcodec: fix compiler warning in certain setups
...
Fixes gstnvh264dec.c:648:12: warning: unused variable ‘ret’
compiler warning on raspbian where HAVE_NVCODEC_GST_GL is
not defined.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1239 >
2020-05-03 11:08:29 +01:00
Seungha Yang
28dc4a1dd8
nvh264sldec: Allow constrained-baseline and baseline profiles
...
Like d3d11h264dec, we need to relax the condition for profiles of nvh264sldec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1228 >
2020-04-30 02:36:34 +09:00
Seungha Yang
4d585c64d1
nvcodec: Add suppport for environment based primary h264 decoder implementation
...
Introduce GST_USE_NV_STATELESS_CODEC environment to allow user to select
primary nvidia decoder implementation. In case the environment
GST_USE_NV_STATELESS_CODEC=h264 was set, old nvidia h264 decoder element
will not be registered. Instead, both nvh264dec and nvh264sldec
factory name will create gstcodecs based new nvidia h264 decoder element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1198 >
2020-04-24 09:23:10 +00:00
Seungha Yang
9c21923f04
nvcodec: Add H264 stateless codec implementation
...
Introduce GstH264Decoder based Nvidia H.264 decoder element.
Similar the element factory name of to v4l2 stateless codec,
this element can be configured with factory name "gstnvh264sldec".
Note that "sl" in the name stands for "stateless"
For now, existing nvh264dec covers more profile and formats
(e.g., interlaced stream) than this implementation.
However, this implementation allows us to control lower level
parameters such as decoded picture buffer management and therefore
we can get a chance to improve performance in terms of latency.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1198 >
2020-04-24 09:23:10 +00:00