diff --git a/src/video_decompress/cineform.cpp b/src/video_decompress/cineform.cpp index e6322d562..8128f9de2 100644 --- a/src/video_decompress/cineform.cpp +++ b/src/video_decompress/cineform.cpp @@ -42,6 +42,9 @@ #include "config_win32.h" #endif // HAVE_CONFIG_H +#include +#include + #include "debug.h" #include "host.h" #include "lib_common.h" @@ -53,7 +56,6 @@ #include "CFHDTypes.h" #include "CFHDDecoder.h" -#include struct state_cineform_decompress { int width = 0; @@ -82,24 +84,23 @@ struct state_cineform_decompress { video_desc saved_desc = {}; }; -static void * cineform_decompress_init(void) -{ - struct state_cineform_decompress *s; - - s = new state_cineform_decompress(); +static void *cineform_decompress_init(void){ + auto s = std::make_unique(); CFHD_Error status; status = CFHD_OpenDecoder(&s->decoderRef, nullptr); if(status != CFHD_ERROR_OKAY){ log_msg(LOG_LEVEL_ERROR, "[cineform] Failed to open decoder\n"); + return nullptr; } status = CFHD_OpenMetadata(&s->metadataRef); if(status != CFHD_ERROR_OKAY){ log_msg(LOG_LEVEL_ERROR, "[cineform] Failed to open metadata\n"); CFHD_CloseDecoder(s->decoderRef); + return nullptr; } - return s; + return s.release(); } static void cineform_decompress_done(void *state)