nvidia: Require explicit set/get commands

This addresses some unexpected behaviors, and might even fix a feature or two.
This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2023-09-30 07:49:53 +02:00 committed by Xaymar
parent 4982a7900e
commit 7fb8c6fea2
8 changed files with 99 additions and 104 deletions

View File

@ -40,11 +40,6 @@ streamfx::nvidia::ar::facedetection::facedetection() : feature(FEATURE_FACE_DETE
{
D_LOG_DEBUG("Initializing... (Addr: 0x%" PRIuPTR ")", this);
// Assign CUDA Stream object.
if (auto err = set(P_NVAR_CONFIG "CUDAStream", _nvcuda->get_stream()); err != cv::result::SUCCESS) {
throw cv::exception("CUDAStream", err);
}
// Prepare initial memory
_rects.resize(ST_MAX_TRACKED_FACES);
_rects_confidence.resize(ST_MAX_TRACKED_FACES);
@ -86,10 +81,10 @@ void ar::facedetection::set_tracking_limit(size_t v)
if (auto err = set_object(P_NVAR_OUTPUT "BoundingBoxes", reinterpret_cast<void*>(&_bboxes), sizeof(bounds_t)); err != cv::result::SUCCESS) {
throw cv::exception("BoundingBoxes", err);
}
if (auto err = set(P_NVAR_OUTPUT "BoundingBoxesConfidence", _rects_confidence); err != cv::result::SUCCESS) {
if (auto err = set_float32array(P_NVAR_OUTPUT "BoundingBoxesConfidence", _rects_confidence); err != cv::result::SUCCESS) {
throw cv::exception("BoundingBoxesConfidence", err);
}
if (auto err = set(P_NVAR_CONFIG "Temporal", (v == 1)); err != cv::result::SUCCESS) {
if (auto err = set_uint32(P_NVAR_CONFIG "Temporal", (v == 1)); err != cv::result::SUCCESS) {
throw cv::exception("Temporal", err);
}
@ -189,7 +184,7 @@ void ar::facedetection::resize(uint32_t width, uint32_t height)
_source = std::make_shared<::streamfx::nvidia::cv::image>(width, height, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::UINT8, ::streamfx::nvidia::cv::component_layout::INTERLEAVED, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto err = set(P_NVAR_INPUT "Image", _source); err != cv::result::SUCCESS) {
if (auto err = set_image(P_NVAR_INPUT "Image", _source); err != cv::result::SUCCESS) {
throw cv::exception("Image", err);
}
@ -203,7 +198,7 @@ void streamfx::nvidia::ar::facedetection::load()
auto cctx = ::streamfx::nvidia::cuda::obs::get()->get_context()->enter();
// Assign CUDA Stream object.
if (auto err = set(P_NVAR_CONFIG "CUDAStream", _nvcuda->get_stream()); err != cv::result::SUCCESS) {
if (auto err = set_cuda_stream(P_NVAR_CONFIG "CUDAStream", _nvcuda->get_stream()); err != cv::result::SUCCESS) {
throw cv::exception("CUDAStream", err);
}

View File

@ -40,15 +40,15 @@ streamfx::nvidia::ar::feature::feature(feature_t feature) : _nvcuda(::streamfx::
_fx = std::shared_ptr<void>(handle, [this](::streamfx::nvidia::ar::handle_t handle) { _nvar->NvAR_Destroy(handle); });
// Set CUDA stream and model directory.
set(P_NVAR_CONFIG "CUDAStream", _nvcuda->get_stream());
set_cuda_stream(P_NVAR_CONFIG "CUDAStream", _nvcuda->get_stream());
_model_path = _nvar->get_model_path().generic_u8string();
set(P_NVAR_CONFIG "ModelDir", _model_path);
set_string(P_NVAR_CONFIG "ModelDir", _model_path);
}
streamfx::nvidia::cv::result streamfx::nvidia::ar::feature::get(parameter_t param, std::string_view& value)
{
const char* cvalue = nullptr;
cv::result res = get(param, cvalue);
cv::result res = get_string(param, cvalue);
if (res == cv::result::SUCCESS) {
if (cvalue) {
value = std::string_view(cvalue);
@ -62,7 +62,7 @@ streamfx::nvidia::cv::result streamfx::nvidia::ar::feature::get(parameter_t para
streamfx::nvidia::cv::result streamfx::nvidia::ar::feature::get(parameter_t param, std::string& value)
{
const char* cvalue = nullptr;
cv::result res = get(param, cvalue);
cv::result res = get_string(param, cvalue);
if (res == cv::result::SUCCESS) {
if (cvalue) {
value = cvalue;

View File

@ -32,58 +32,58 @@ namespace streamfx::nvidia::ar {
}
public /* Int32 */:
inline cv::result set(parameter_t param, uint32_t const value)
inline cv::result set_uint32(parameter_t param, uint32_t const value)
{
return _nvar->NvAR_SetU32(_fx.get(), param, value);
}
inline cv::result get(parameter_t param, uint32_t* value)
inline cv::result get_uint32(parameter_t param, uint32_t* value)
{
return _nvar->NvAR_GetU32(_fx.get(), param, value);
}
inline cv::result set(parameter_t param, int32_t const value)
inline cv::result set_int32(parameter_t param, int32_t const value)
{
return _nvar->NvAR_SetS32(_fx.get(), param, value);
}
inline cv::result get(parameter_t param, int32_t* value)
inline cv::result get_int32(parameter_t param, int32_t* value)
{
return _nvar->NvAR_GetS32(_fx.get(), param, value);
}
public /* Int64 */:
inline cv::result set(parameter_t param, uint64_t const value)
inline cv::result set_uint64(parameter_t param, uint64_t const value)
{
return _nvar->NvAR_SetU64(_fx.get(), param, value);
}
inline cv::result get(parameter_t param, uint64_t* value)
inline cv::result get_uint64(parameter_t param, uint64_t* value)
{
return _nvar->NvAR_GetU64(_fx.get(), param, value);
}
public /* Float32 */:
inline cv::result set(parameter_t param, float const value)
inline cv::result set_float32(parameter_t param, float const value)
{
return _nvar->NvAR_SetF32(_fx.get(), param, value);
}
inline cv::result get(parameter_t param, float* value)
inline cv::result get_float32(parameter_t param, float* value)
{
return _nvar->NvAR_GetF32(_fx.get(), param, value);
}
inline cv::result set(parameter_t param, float* const value, int32_t size)
inline cv::result set_float32array(parameter_t param, float* const value, int32_t size)
{
return _nvar->NvAR_SetF32Array(_fx.get(), param, value, static_cast<int32_t>(size));
}
inline cv::result get(parameter_t param, const float* value, int32_t size)
inline cv::result get_float32array(parameter_t param, const float* value, int32_t size)
{
return _nvar->NvAR_GetF32Array(_fx.get(), param, &value, &size);
}
inline cv::result set(parameter_t param, std::vector<float> const& value)
inline cv::result set_float32array(parameter_t param, std::vector<float> const& value)
{
return _nvar->NvAR_SetF32Array(_fx.get(), param, value.data(), static_cast<int32_t>(value.size()));
}
inline cv::result get(parameter_t param, std::vector<float>& value)
inline cv::result get_float32array(parameter_t param, std::vector<float>& value)
{
const float* data;
int32_t size;
@ -98,71 +98,71 @@ namespace streamfx::nvidia::ar {
}
public /* Float64 */:
inline cv::result set(parameter_t param, double const value)
inline cv::result set_float64(parameter_t param, double const value)
{
return _nvar->NvAR_SetF64(_fx.get(), param, value);
}
inline cv::result get(parameter_t param, double* value)
inline cv::result get_float64(parameter_t param, double* value)
{
return _nvar->NvAR_GetF64(_fx.get(), param, value);
}
public /* String */:
inline cv::result set(parameter_t param, const char* const value)
inline cv::result set_string(parameter_t param, const char* const value)
{
return _nvar->NvAR_SetString(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, const char*& value)
inline cv::result get_string(parameter_t param, const char*& value)
{
return _nvar->NvAR_GetString(_fx.get(), param, &value);
};
inline cv::result set(parameter_t param, std::string_view const value)
inline cv::result set_string(parameter_t param, std::string_view const value)
{
return _nvar->NvAR_SetString(_fx.get(), param, value.data());
};
cv::result get(parameter_t param, std::string_view& value);
inline cv::result set(parameter_t param, std::string const& value)
inline cv::result set_string(parameter_t param, std::string const& value)
{
return _nvar->NvAR_SetString(_fx.get(), param, value.c_str());
};
cv::result get(parameter_t param, std::string& value);
public /* CUDA Stream */:
inline cv::result set(parameter_t param, cuda::stream_t const value)
inline cv::result set_cuda_stream(parameter_t param, cuda::stream_t const value)
{
return _nvar->NvAR_SetCudaStream(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, cuda::stream_t& value)
inline cv::result get_cuda_stream(parameter_t param, cuda::stream_t& value)
{
return _nvar->NvAR_GetCudaStream(_fx.get(), param, &value);
};
inline cv::result set(parameter_t param, std::shared_ptr<::streamfx::nvidia::cuda::stream> const value)
inline cv::result set_cuda_stream(parameter_t param, std::shared_ptr<::streamfx::nvidia::cuda::stream> const value)
{
return _nvar->NvAR_SetCudaStream(_fx.get(), param, value->get());
}
//inline cv::result get(parameter_t param, std::shared_ptr<::streamfx::nvidia::cuda::stream> value);
public /* CV Image */:
inline cv::result set(parameter_t param, cv::image_t& value)
inline cv::result set_image(parameter_t param, cv::image_t& value)
{
return _nvar->NvAR_SetObject(_fx.get(), param, &value, sizeof(cv::image_t));
};
inline cv::result get(parameter_t param, cv::image_t*& value)
inline cv::result get_image(parameter_t param, cv::image_t*& value)
{
return _nvar->NvAR_GetObject(_fx.get(), param, reinterpret_cast<object_t*>(&value), sizeof(cv::image_t));
};
inline cv::result set(parameter_t param, std::shared_ptr<cv::image> const value)
inline cv::result set_image(parameter_t param, std::shared_ptr<cv::image> const value)
{
return _nvar->NvAR_SetObject(_fx.get(), param, value->get_image(), sizeof(cv::image_t));
};
//inline cv::result get(parameter_t param, std::shared_ptr<cv::image>& value);
public /* CV Texture */:
inline cv::result set(parameter_t param, std::shared_ptr<cv::texture> const value)
inline cv::result set_image(parameter_t param, std::shared_ptr<cv::texture> const value)
{
return _nvar->NvAR_SetObject(_fx.get(), param, value->get_image(), sizeof(cv::image_t));
};

View File

@ -69,7 +69,7 @@ void streamfx::nvidia::vfx::denoising::set_strength(float strength)
// Update Effect
auto gctx = ::streamfx::obs::gs::context();
auto cctx = _nvcuda->get_context()->enter();
if (auto res = set(PARAMETER_STRENGTH, _strength); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_float32(PARAMETER_STRENGTH, _strength); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set '%s' to %1.3f.", PARAMETER_STRENGTH, _strength);
};
}
@ -211,7 +211,7 @@ void streamfx::nvidia::vfx::denoising::resize(uint32_t width, uint32_t height)
_source = std::make_shared<::streamfx::nvidia::cv::image>(width, height, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::FP32, ::streamfx::nvidia::cv::component_layout::PLANAR, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto res = set(::streamfx::nvidia::vfx::PARAMETER_INPUT_IMAGE_0, _source); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_image(::streamfx::nvidia::vfx::PARAMETER_INPUT_IMAGE_0, _source); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set input image due to error: %s", _nvcvi->NvCV_GetErrorStringFromCode(res));
_source.reset();
throw std::runtime_error("SetImage failed.");
@ -227,7 +227,7 @@ void streamfx::nvidia::vfx::denoising::resize(uint32_t width, uint32_t height)
_destination = std::make_shared<::streamfx::nvidia::cv::image>(width, height, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::FP32, ::streamfx::nvidia::cv::component_layout::PLANAR, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto res = set(::streamfx::nvidia::vfx::PARAMETER_OUTPUT_IMAGE_0, _destination); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_image(::streamfx::nvidia::vfx::PARAMETER_OUTPUT_IMAGE_0, _destination); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set output image due to error: %s", _nvcvi->NvCV_GetErrorStringFromCode(res));
_destination.reset();
throw std::runtime_error("SetImage failed.");

View File

@ -51,21 +51,21 @@ streamfx::nvidia::vfx::effect::effect(effect_t effect) : _nvcuda(cuda::obs::get(
_fx = std::shared_ptr<void>(handle, [](::vfx::handle_t handle) { ::vfx::vfx::get()->NvVFX_DestroyEffect(handle); });
// Assign CUDA Stream object.
if (auto v = set(PARAMETER_CUDA_STREAM, _nvcuda->get_stream()); v != cv::result::SUCCESS) {
if (auto v = set_cuda_stream(PARAMETER_CUDA_STREAM, _nvcuda->get_stream()); v != cv::result::SUCCESS) {
throw ::streamfx::nvidia::cv::exception(PARAMETER_CUDA_STREAM, v);
}
// Assign Model Directory.
_model_path = _nvvfx->model_path().generic_u8string();
if (auto v = set(PARAMETER_MODEL_DIRECTORY, _model_path); v != cv::result::SUCCESS) {
if (auto v = set_string(PARAMETER_MODEL_DIRECTORY, _model_path); v != cv::result::SUCCESS) {
throw ::streamfx::nvidia::cv::exception(PARAMETER_MODEL_DIRECTORY, v);
}
}
cv::result streamfx::nvidia::vfx::effect::get(parameter_t param, std::string_view& value)
cv::result streamfx::nvidia::vfx::effect::get_string(parameter_t param, std::string_view& value)
{
const char* cvalue = nullptr;
cv::result res = get(param, cvalue);
cv::result res = get_string(param, cvalue);
if (res == cv::result::SUCCESS) {
if (cvalue) {
value = std::string_view(cvalue);
@ -76,10 +76,10 @@ cv::result streamfx::nvidia::vfx::effect::get(parameter_t param, std::string_vie
return res;
}
cv::result streamfx::nvidia::vfx::effect::get(parameter_t param, std::string& value)
cv::result streamfx::nvidia::vfx::effect::get_string(parameter_t param, std::string& value)
{
const char* cvalue = nullptr;
cv::result res = get(param, cvalue);
cv::result res = get_string(param, cvalue);
if (res == cv::result::SUCCESS) {
if (cvalue) {
value = cvalue;

View File

@ -39,137 +39,137 @@ namespace streamfx::nvidia::vfx {
}
public /* Int32 */:
inline cv::result set(parameter_t param, uint32_t const value)
inline cv::result set_uint32(parameter_t param, uint32_t const value)
{
return _nvvfx->NvVFX_SetU32(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, uint32_t& value)
}
inline cv::result get_uint32(parameter_t param, uint32_t& value)
{
return _nvvfx->NvVFX_GetU32(_fx.get(), param, &value);
};
}
inline cv::result set(parameter_t param, int32_t const value)
inline cv::result set_int32(parameter_t param, int32_t const value)
{
return _nvvfx->NvVFX_SetS32(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, int32_t& value)
}
inline cv::result get_int32(parameter_t param, int32_t& value)
{
return _nvvfx->NvVFX_GetS32(_fx.get(), param, &value);
};
}
public /* Int64 */:
inline cv::result set(parameter_t param, uint64_t const value)
inline cv::result set_uint64(parameter_t param, uint64_t const value)
{
return _nvvfx->NvVFX_SetU64(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, uint64_t& value)
}
inline cv::result get_uint64(parameter_t param, uint64_t& value)
{
return _nvvfx->NvVFX_GetU64(_fx.get(), param, &value);
};
}
public /* Float32 */:
inline cv::result set(parameter_t param, float const value)
inline cv::result set_float32(parameter_t param, float const value)
{
return _nvvfx->NvVFX_SetF32(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, float& value)
}
inline cv::result get_float32(parameter_t param, float& value)
{
return _nvvfx->NvVFX_GetF32(_fx.get(), param, &value);
};
}
public /* Float64 */:
inline cv::result set(parameter_t param, double const value)
inline cv::result set_float64(parameter_t param, double const value)
{
return _nvvfx->NvVFX_SetF64(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, double& value)
}
inline cv::result get_float64(parameter_t param, double& value)
{
return _nvvfx->NvVFX_GetF64(_fx.get(), param, &value);
};
}
public /* String */:
inline cv::result set(parameter_t param, const char* const value)
inline cv::result set_string(parameter_t param, const char* const value)
{
return _nvvfx->NvVFX_SetString(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, const char*& value)
}
inline cv::result get_string(parameter_t param, const char*& value)
{
return _nvvfx->NvVFX_GetString(_fx.get(), param, &value);
};
}
inline cv::result set(parameter_t param, std::string_view const& value)
inline cv::result set_string(parameter_t param, std::string_view const& value)
{
return _nvvfx->NvVFX_SetString(_fx.get(), param, value.data());
};
cv::result get(parameter_t param, std::string_view& value);
}
cv::result get_string(parameter_t param, std::string_view& value);
inline cv::result set(parameter_t param, std::string const& value)
inline cv::result set_string(parameter_t param, std::string const& value)
{
return _nvvfx->NvVFX_SetString(_fx.get(), param, value.c_str());
};
cv::result get(parameter_t param, std::string& value);
}
cv::result get_string(parameter_t param, std::string& value);
public /* CUDA Stream */:
inline cv::result set(parameter_t param, cuda::stream_t const& value)
inline cv::result set_cuda_stream(parameter_t param, cuda::stream_t const& value)
{
return _nvvfx->NvVFX_SetCudaStream(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, cuda::stream_t& value)
}
inline cv::result get_cuda_stream(parameter_t param, cuda::stream_t& value)
{
return _nvvfx->NvVFX_GetCudaStream(_fx.get(), param, &value);
};
}
inline cv::result set(parameter_t param, std::shared_ptr<cuda::stream> const& value)
inline cv::result set_cuda_stream(parameter_t param, std::shared_ptr<cuda::stream> const& value)
{
return _nvvfx->NvVFX_SetCudaStream(_fx.get(), param, value->get());
};
}
//cv::result get_stream(parameter_t param, std::shared_ptr<cuda::stream>& value);
public /* CV Image */:
inline cv::result set(parameter_t param, cv::image_t* value)
inline cv::result set_image(parameter_t param, cv::image_t* value)
{
return _nvvfx->NvVFX_SetImage(_fx.get(), param, value);
};
inline cv::result get(parameter_t param, cv::image_t* value)
}
inline cv::result get_image(parameter_t param, cv::image_t* value)
{
return _nvvfx->NvVFX_GetImage(_fx.get(), param, value);
};
}
inline cv::result set(parameter_t param, std::shared_ptr<cv::image> const& value)
inline cv::result set_image(parameter_t param, std::shared_ptr<cv::image> const& value)
{
return _nvvfx->NvVFX_SetImage(_fx.get(), param, value->get_image());
};
inline cv::result get(parameter_t param, std::shared_ptr<cv::image>& value)
}
inline cv::result get_image(parameter_t param, std::shared_ptr<cv::image>& value)
{
return _nvvfx->NvVFX_GetImage(_fx.get(), param, value->get_image());
};
}
public /* CV Texture */:
inline cv::result set(parameter_t param, std::shared_ptr<cv::texture> const& value)
inline cv::result set_image(parameter_t param, std::shared_ptr<cv::texture> const& value)
{
return _nvvfx->NvVFX_SetImage(_fx.get(), param, value->get_image());
};
}
//cv::result get(parameter_t param, std::shared_ptr<cv::texture>& value);
public /* Objects */:
inline cv::result set_object(parameter_t param, void* const value)
{
return _nvvfx->NvVFX_SetObject(_fx.get(), param, value);
};
}
inline cv::result get_object(parameter_t param, void*& value)
{
return _nvvfx->NvVFX_GetObject(_fx.get(), param, &value);
};
}
public /* Control */:
inline cv::result load()
{
return _nvvfx->NvVFX_Load(_fx.get());
};
}
inline cv::result run(bool async = false)
{
return _nvvfx->NvVFX_Run(_fx.get(), async ? 1 : 0);
};
}
};
} // namespace streamfx::nvidia::vfx

View File

@ -78,7 +78,7 @@ void streamfx::nvidia::vfx::greenscreen::size(std::pair<uint32_t, uint32_t>& siz
void streamfx::nvidia::vfx::greenscreen::set_mode(greenscreen_mode mode)
{
set(PARAMETER_MODE, static_cast<uint32_t>(mode));
set_uint32(PARAMETER_MODE, static_cast<uint32_t>(mode));
_dirty = true;
}
@ -196,7 +196,7 @@ void streamfx::nvidia::vfx::greenscreen::resize(uint32_t width, uint32_t height)
_source = std::make_shared<::streamfx::nvidia::cv::image>(in_size.first, in_size.second, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::UINT8, ::streamfx::nvidia::cv::component_layout::INTERLEAVED, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto v = set(PARAMETER_INPUT_IMAGE_0, _source); v != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto v = set_image(PARAMETER_INPUT_IMAGE_0, _source); v != ::streamfx::nvidia::cv::result::SUCCESS) {
throw ::streamfx::nvidia::cv::exception(PARAMETER_INPUT_IMAGE_0, v);
}
@ -210,7 +210,7 @@ void streamfx::nvidia::vfx::greenscreen::resize(uint32_t width, uint32_t height)
_destination = std::make_shared<::streamfx::nvidia::cv::image>(in_size.first, in_size.second, ::streamfx::nvidia::cv::pixel_format::A, ::streamfx::nvidia::cv::component_type::UINT8, ::streamfx::nvidia::cv::component_layout::INTERLEAVED, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto v = set(PARAMETER_OUTPUT_IMAGE_0, _destination); v != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto v = set_image(PARAMETER_OUTPUT_IMAGE_0, _destination); v != ::streamfx::nvidia::cv::result::SUCCESS) {
throw ::streamfx::nvidia::cv::exception(PARAMETER_OUTPUT_IMAGE_0, v);
}
@ -234,7 +234,7 @@ void streamfx::nvidia::vfx::greenscreen::load()
auto cctx = _nvcuda->get_context()->enter();
// Assign CUDA Stream object.
if (auto v = set(PARAMETER_CUDA_STREAM, _nvcuda->get_stream()); v != cv::result::SUCCESS) {
if (auto v = set_cuda_stream(PARAMETER_CUDA_STREAM, _nvcuda->get_stream()); v != cv::result::SUCCESS) {
throw ::streamfx::nvidia::cv::exception(PARAMETER_CUDA_STREAM, v);
}

View File

@ -102,7 +102,7 @@ void streamfx::nvidia::vfx::superresolution::set_strength(float strength)
uint32_t value = (_strength >= .5f) ? 1u : 0u;
auto gctx = ::streamfx::obs::gs::context();
auto cctx = ::streamfx::nvidia::cuda::obs::get()->get_context()->enter();
if (auto res = set(::streamfx::nvidia::vfx::PARAMETER_STRENGTH, value); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_float32(::streamfx::nvidia::vfx::PARAMETER_STRENGTH, value); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set '%s' to %lu.", ::streamfx::nvidia::vfx::PARAMETER_STRENGTH, value);
};
}
@ -311,7 +311,7 @@ void streamfx::nvidia::vfx::superresolution::resize(uint32_t width, uint32_t hei
_source = std::make_shared<::streamfx::nvidia::cv::image>(_cache_input_size.first, _cache_input_size.second, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::FP32, ::streamfx::nvidia::cv::component_layout::PLANAR, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto res = set(::streamfx::nvidia::vfx::PARAMETER_INPUT_IMAGE_0, _source); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_image(::streamfx::nvidia::vfx::PARAMETER_INPUT_IMAGE_0, _source); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set input image due to error: %s", _nvcvi->NvCV_GetErrorStringFromCode(res));
throw std::runtime_error("SetImage failed.");
}
@ -326,7 +326,7 @@ void streamfx::nvidia::vfx::superresolution::resize(uint32_t width, uint32_t hei
_destination = std::make_shared<::streamfx::nvidia::cv::image>(_cache_output_size.first, _cache_output_size.second, ::streamfx::nvidia::cv::pixel_format::BGR, ::streamfx::nvidia::cv::component_type::FP32, ::streamfx::nvidia::cv::component_layout::PLANAR, ::streamfx::nvidia::cv::memory_location::GPU, 1);
}
if (auto res = set(::streamfx::nvidia::vfx::PARAMETER_OUTPUT_IMAGE_0, _destination); res != ::streamfx::nvidia::cv::result::SUCCESS) {
if (auto res = set_image(::streamfx::nvidia::vfx::PARAMETER_OUTPUT_IMAGE_0, _destination); res != ::streamfx::nvidia::cv::result::SUCCESS) {
D_LOG_ERROR("Failed to set output image due to error: %s", _nvcvi->NvCV_GetErrorStringFromCode(res));
throw std::runtime_error("SetImage failed.");
}