diff --git a/girs/CudaGst-1.0.gir b/girs/CudaGst-1.0.gir
index 921f7b76b5..c38a0d2ed9 100644
--- a/girs/CudaGst-1.0.gir
+++ b/girs/CudaGst-1.0.gir
@@ -489,6 +489,8 @@ and/or use gtk-doc annotations. -->
+
+
diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
index a070743ece..fb07171180 100644
--- a/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
+++ b/subprojects/gst-plugins-bad/gst-libs/gst/cuda/stub/cuda.h
@@ -39,6 +39,7 @@ typedef gint CUdevice;
typedef enum
{
CUDA_SUCCESS = 0,
+ CUDA_ERROR_NO_DEVICE = 100,
CUDA_ERROR_ALREADY_MAPPED = 208,
CUDA_ERROR_NOT_SUPPORTED = 801,
} CUresult;
diff --git a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvbaseenc.c b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvbaseenc.c
index be964a555f..b66c08aff0 100644
--- a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvbaseenc.c
+++ b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvbaseenc.c
@@ -460,7 +460,13 @@ gst_nv_base_enc_open_encode_session (GstNvBaseEnc * nvenc)
params.deviceType = NV_ENC_DEVICE_TYPE_CUDA;
nv_ret = NvEncOpenEncodeSessionEx (¶ms, &nvenc->encoder);
- return nv_ret == NV_ENC_SUCCESS;
+ if (nv_ret != NV_ENC_SUCCESS) {
+ /* Report error to abort if GST_CUDA_CRITICAL_ERRORS is configured */
+ gst_cuda_result (CUDA_ERROR_NO_DEVICE);
+ return FALSE;
+ }
+
+ return TRUE;
}
static gboolean
diff --git a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvencobject.cpp b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvencobject.cpp
index 65f27f6408..6520c2a472 100644
--- a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvencobject.cpp
+++ b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvencobject.cpp
@@ -173,6 +173,8 @@ GstNvEncObject::CreateInstance (GstElement * client, GstObject * device,
status = NvEncOpenEncodeSessionEx (params, &session);
if (!NVENC_IS_SUCCESS (status, nullptr)) {
GST_ERROR_OBJECT (device, "NvEncOpenEncodeSessionEx failed");
+ /* Report error to abort if GST_CUDA_CRITICAL_ERRORS is configured */
+ gst_cuda_result (CUDA_ERROR_NO_DEVICE);
return nullptr;
}
diff --git a/subprojects/gst-plugins-bad/sys/nvcodec/plugin.c b/subprojects/gst-plugins-bad/sys/nvcodec/plugin.c
index 6f51eb262c..82c3617c2d 100644
--- a/subprojects/gst-plugins-bad/sys/nvcodec/plugin.c
+++ b/subprojects/gst-plugins-bad/sys/nvcodec/plugin.c
@@ -121,6 +121,9 @@ plugin_init (GstPlugin * plugin)
CuGetErrorString (cuda_ret, &err_desc);
GST_ERROR ("Failed to init cuda, cuInit ret: 0x%x: %s: %s",
(int) cuda_ret, err_name, err_desc);
+
+ /* to abort if GST_CUDA_CRITICAL_ERRORS is configured */
+ gst_cuda_result (CUDA_ERROR_NO_DEVICE);
return TRUE;
}