Commit graph

46 commits

Author SHA1 Message Date
Seungha Yang
7d0646d7fe meson: Add nvenc and nvdec to plugin list when available 2019-05-18 02:47:37 +00:00
Seungha Yang
a512f5b6cd nvenc: Respect display aspect ratio and set to encoding parameter
It should be written in VUI parameter for proper rendering
2019-05-09 15:42:19 +09:00
Seungha Yang
9d6e2e364c meson: Allow CUDA_PATH fallback on linux
That's what we've supported via autotools build

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/966
2019-05-08 19:42:42 +09:00
Seungha Yang
cae6b7112d nvh264enc: Fix broken Y444 format encoding with system memory Y444 support
separateColourPlaneFlag is mapped to separate_colour_plane_flag which
means Y, U and V planes are separately processed as monochrome sampled pictures.
So encoder shouldn't set that flag for normal 4:4:4 encoding.

Also for 4:4:4 encoding, NV_ENC_H264_PROFILE_HIGH_444_GUID profile must be
explicitly set.
2019-05-06 17:30:32 +09:00
Niels De Graef
11a2df46b3 nvenc/nvdec: Add NVIDIA SDK headers to noinst_HEADERS
The tarballs that were being spun for 1.16 don't contain these headers
due to this small oversight, so let's add them.
2019-05-02 22:31:00 +00:00
Shi Yan
f769758e9a Increase nvenc's encoding height to 4096
According to https://developer.nvidia.com/nvidia-video-codec-sdk

the minimum resolution nvenc supports should be 4096x4096
2019-04-04 20:19:42 +00:00
Seungha Yang
aaee282051 nvenc: Don't leak CUDA device memory
Allocated device memory should be freed with cuMemFree
2019-03-26 11:54:16 +00:00
Seungha Yang
d0f2f262aa nvenc: Ensure unmap resources before finalizing them
Mapped resource via NvEncMapInputResource() will result to unregister fail.
It can happen when paused to ready state change without EOS event.
2019-03-26 11:54:16 +00:00
Seungha Yang
60983fcea9 nvenc: Don't release stream lock on GstVideoEncoder::stop()
baseclass didn't take the stream lock during stop. It's valid only for
GstVideoEncoder::finish()

Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/912
2019-03-25 22:26:35 +09:00
Nirbheek Chauhan
48d897f65f nvenc: Fix build when cuda is found but nvenc is disabled
tests\check\meson.build:21:5: ERROR:  Unknown variable "use_nvenc_gl".

Also do the same change in nvdec, just to be defensive about future
issues.
2019-03-11 14:45:14 +05:30
Seungha Yang
01a402e4ec nvenc: More clean up on stop for encoder to be reusable
Encoder will not configure internal pool again if input_state exist

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/912
2019-03-10 13:58:42 +09:00
Seungha Yang
74848770a5 nvenc: Ensure drain all frames on finish
To drain all queued encoding items, encoder should gracefully
wait the encoding thread without stealing queued items.
Otherwise, some input frames can be dropped.
2019-03-10 13:58:42 +09:00
Yeongjin Jeong
8e860fffd9 nvenc: Fix GValue leaks
GValue should be freed with g_value_unset()
2019-03-09 15:17:30 +00:00
Tim-Philipp Müller
d5b03bfed8 nvenc, nvdec: add Hardware tag to element metadata 2019-02-19 23:44:42 +00:00
Nirbheek Chauhan
7ffcab3478 build: Don't forget to add windows files to EXTRA_DIST 2019-01-18 13:13:09 +05:30
Seungha Yang
d3a6eb7977 nvh265enc: Fix email address typo 2018-11-25 23:31:37 +00:00
Seungha Yang
c75907d23c nvenc: Fix undefined reference build error on MSVC and CUDA 9.1 2018-11-25 23:31:37 +00:00
Seungha Yang
3cd1d0c7bc nvenc: Fix MSVC build error C2121 2018-11-25 23:31:37 +00:00
Seungha Yang
6bf5ba993d nvenc: Add meson build with Windows support
Note that, since Nvidia does not provide nvEncodeAPI.lib file,
find_library() couldn't be used for build on Windows.
This patch changes to load nvEncodeAPI(64).dll or libnvidia-encode.so
in runtime
2018-11-25 23:31:37 +00:00
Seungha Yang
67a84254ae nvdec/nvenc: Shipping NVIDA Codec SDK headers
Add cuvidec.h, nvcuvid.h and nvEncodeAPI.h of NVIDIA Codec SDK 8.2.16
2018-11-25 23:31:37 +00:00
Seungha Yang
535adfee37 nvenc: Fix build warning error
'cuDeviceComputeCapability' was deprecated as of CUDA 5.0

gstnvenc.c: In function ‘gst_nvenc_create_cuda_context’:
gstnvenc.c:290:9: error: ‘cuDeviceComputeCapability’ is deprecated [-Werror=deprecated-declarations]
         && cuDeviceComputeCapability (&maj, &min, cdev) == CUDA_SUCCESS) {
         ^

https://bugzilla.gnome.org/show_bug.cgi?id=796203
2018-05-18 10:43:39 +01:00
Jan Schmidt
e496f398ec nvenc: Remove GST_USE_UNSTABLE_API defines
GstGL is no longer unstable API since moving to -base
2018-04-25 02:44:14 +10:00
Jan Schmidt
02c2b0b275 nvenc: Use the HAVE_NVENC_GST_GL define instead of HAVE_GST_GL
Fix compiling against the GL interop by gating includes
on the right header
2018-04-25 02:44:14 +10:00
Seungha Yang
3f318ecb96 nvh265enc: Add Nvidia GPU based HEVC encoder
https://bugzilla.gnome.org/show_bug.cgi?id=795037
2018-04-25 01:59:30 +10:00
Seungha Yang
5f95094f39 nvencbase: Define sinkpad template in subclass
https://bugzilla.gnome.org/show_bug.cgi?id=795037
2018-04-25 01:59:30 +10:00
Seungha Yang
6242dae832 nvenc: Add debug catagory for nvh264enc
https://bugzilla.gnome.org/show_bug.cgi?id=795037
2018-04-25 01:59:30 +10:00
Daeseok Youn
faa892fb48 nvbaseenc: fix build warnings with HAVE_NVENC_GST_GL
fix following error:
gstnvbaseenc.c: In function ‘gst_nv_base_enc_set_context’:
gstnvbaseenc.c:451:17: error: unused variable ‘nvenc’ [-Werror=unused-variable]
   GstNvBaseEnc *nvenc = GST_NV_BASE_ENC (element);
                 ^

https://bugzilla.gnome.org/show_bug.cgi?id=794896
2018-04-02 19:42:15 +01:00
Tim-Philipp Müller
07c8417799 nvenc: add "gop-size" property
This also changes the default gop size from 30 to 75 frames.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:39:40 +00:00
Tim-Philipp Müller
bea0ea66be nvenc: mark properties that can be changed at runtime accordingly
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:21:48 +00:00
Ole André Vadla Ravnås
59365e3d7b nvenc: Add support for dynamic bitrate/preset reconfiguration
Useful for dynamically updating bitrate in live scenarios.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 10:17:58 +00:00
Ole André Vadla Ravnås
bc92b10164 nvenc: Add support for I420
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2018-01-24 09:30:49 +00:00
Tim-Philipp Müller
06e4403fdb gl: update plugins to use GstGL from -base 2017-12-19 12:02:31 +00:00
Ponnam Srinivas
53ea2f82ae nvbaseenc: Fix Memory leak in error case
https://bugzilla.gnome.org/show_bug.cgi?id=788243
2017-10-13 18:43:01 +03:00
Nicolas Dufresne
4261692187 Remove plugin specific static build option
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-05-16 14:05:52 -04:00
Ole André Vadla Ravnås
cb28314013 nvenc: Stop bitstream thread in ::stop()
Otherwise we are likely to crash if EOS didn't happen yet.

https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:57 +01:00
Ole André Vadla Ravnås
70ac63a97c nvenc: Update to the current gstreamer-gl API
https://bugzilla.gnome.org/show_bug.cgi?id=781410
2017-04-19 11:51:55 +01:00
Matthew Waters
dc1a326090 nvenc: add some rate control modes/properties
Supported modes are constant quantizer, cbr, vbr and vbr with a minimum quantizer.
2016-04-08 15:24:20 +10:00
Matthew Waters
065f4dceb1 nvenc: move codec config initialization from the implementation to the base class
Supports a better separation of configuration parameters
2016-04-08 15:08:18 +10:00
Matthew Waters
c45fc2ef53 nvenc: add preset selection
Some presets are not always supported on all devices and will cause an error if
used.  Specifically, the LOSSLESS presets are known to not work everywhere.
2016-04-08 15:08:18 +10:00
Matthew Waters
d6f7ea88bb nvenc: add support for building against version 6 of the SDK
While mostly API compatible, the ABI has changed so binaries will not work
across header versions (and ultimately nvidia driver releases).

https://bugzilla.gnome.org/show_bug.cgi?id=763324
2016-03-31 17:26:47 +11:00
Vineeth TM
8cdfb13658 bad: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Matthew Waters
b48049a171 nvenc: release the frames and list when searching for an output buffer
Fixes a massive leak in:

videotestsrc ! nvh264enc ! fakesink
2016-02-25 00:07:14 +11:00
Matthew Waters
ffba31b7b2 nvenc: update for recent GL api changes
Specifically the GstGLMemoryPBO addition (which was the unadorned GstGLMemory).
2016-01-12 23:36:54 +11:00
Matthew Marsh
0e34c02dd6 nvenc: fix high CPU use on initialization of multiple encoders at the same time
We need a static lock to protect various NVENC methods in _set_format(). Without
this the CPU use increases dramatically on initialisation of the element when
there are multiple elements being initialised at the same time.

https://bugzilla.gnome.org/show_bug.cgi?id=759742
2015-12-22 13:27:51 +00:00
Matthew Waters
63a7cbf8f1 nvenc: call the parent class on GstElement::set_context 2015-09-29 16:17:22 +10:00
Matthew Waters
b1d13e10af Add Nvidia based hardware encoder element
Currently only h264 is supported

https://bugzilla.gnome.org/show_bug.cgi?id=753405
2015-09-29 15:32:17 +10:00