obs-ffmpeg: Fix leaks in AMF with unique_ptr

master
jpark37 2022-08-15 08:19:04 -07:00 committed by Jim
parent 3191c73e16
commit 690ba952de
1 changed files with 14 additions and 14 deletions

View File

@ -1231,15 +1231,15 @@ static void *amf_avc_create_texencode(obs_data_t *settings,
try {
check_texture_encode_capability(encoder, false);
amf_texencode *enc = new amf_texencode;
std::unique_ptr<amf_texencode> enc = std::make_unique<amf_texencode>();
enc->encoder = encoder;
enc->encoder_str = "texture-amf-h264";
if (!amf_init_d3d11(enc))
if (!amf_init_d3d11(enc.get()))
throw "Failed to create D3D11";
amf_avc_create_internal(enc, settings);
return enc;
amf_avc_create_internal(enc.get(), settings);
return enc.release();
} catch (const amf_error &err) {
blog(LOG_ERROR, "[texture-amf-h264] %s: %s: %ls", __FUNCTION__, err.str,
@ -1254,12 +1254,12 @@ try {
static void *amf_avc_create_fallback(obs_data_t *settings,
obs_encoder_t *encoder)
try {
amf_fallback *enc = new amf_fallback;
std::unique_ptr<amf_fallback> enc = std::make_unique<amf_fallback>();
enc->encoder = encoder;
enc->encoder_str = "fallback-amf-h264";
amf_avc_create_internal(enc, settings);
return enc;
amf_avc_create_internal(enc.get(), settings);
return enc.release();
} catch (const amf_error &err) {
blog(LOG_ERROR, "[texture-amf-h264] %s: %s: %ls", __FUNCTION__, err.str,
@ -1541,15 +1541,15 @@ static void *amf_hevc_create_texencode(obs_data_t *settings,
try {
check_texture_encode_capability(encoder, true);
amf_texencode *enc = new amf_texencode;
std::unique_ptr<amf_texencode> enc = std::make_unique<amf_texencode>();
enc->encoder = encoder;
enc->encoder_str = "texture-amf-h265";
if (!amf_init_d3d11(enc))
if (!amf_init_d3d11(enc.get()))
throw "Failed to create D3D11";
amf_hevc_create_internal(enc, settings);
return enc;
amf_hevc_create_internal(enc.get(), settings);
return enc.release();
} catch (const amf_error &err) {
blog(LOG_ERROR, "[texture-amf-h265] %s: %s: %ls", __FUNCTION__, err.str,
@ -1564,12 +1564,12 @@ try {
static void *amf_hevc_create_fallback(obs_data_t *settings,
obs_encoder_t *encoder)
try {
amf_fallback *enc = new amf_fallback;
std::unique_ptr<amf_fallback> enc = std::make_unique<amf_fallback>();
enc->encoder = encoder;
enc->encoder_str = "fallback-amf-h265";
amf_hevc_create_internal(enc, settings);
return enc;
amf_hevc_create_internal(enc.get(), settings);
return enc.release();
} catch (const amf_error &err) {
blog(LOG_ERROR, "[texture-amf-h265] %s: %s: %ls", __FUNCTION__, err.str,