mirror of
https://github.com/Xaymar/obs-StreamFX
synced 2024-11-11 06:15:05 +00:00
plugin: Use self-registration code everywhere
This commit is contained in:
parent
cb1ae28b07
commit
e9fc9e89f2
6 changed files with 45 additions and 19 deletions
|
@ -32,18 +32,17 @@ extern "C" {
|
||||||
#pragma warning (pop)
|
#pragma warning (pop)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize & Finalizer
|
// Initializer & Finalizer
|
||||||
static Filter::Blur* handler;
|
static Filter::Blur* filterBlurInstance;
|
||||||
INITIALIZER(FilterBlurInit) {
|
INITIALIZER(FilterBlurInit) {
|
||||||
initializerFunctions.push_back([] {
|
initializerFunctions.push_back([] {
|
||||||
handler = new Filter::Blur();
|
filterBlurInstance = new Filter::Blur();
|
||||||
});
|
});
|
||||||
finalizerFunctions.push_back([] {
|
finalizerFunctions.push_back([] {
|
||||||
delete handler;
|
delete filterBlurInstance;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
enum ColorFormat : uint64_t {
|
enum ColorFormat : uint64_t {
|
||||||
RGB,
|
RGB,
|
||||||
YUV, // 701
|
YUV, // 701
|
||||||
|
|
|
@ -20,6 +20,17 @@
|
||||||
#include "filter-displacement.h"
|
#include "filter-displacement.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
|
|
||||||
|
// Initializer & Finalizer
|
||||||
|
static Filter::Displacement* filterDisplacementInstance;
|
||||||
|
INITIALIZER(FilterDisplacementInit) {
|
||||||
|
initializerFunctions.push_back([] {
|
||||||
|
filterDisplacementInstance = new Filter::Displacement();
|
||||||
|
});
|
||||||
|
finalizerFunctions.push_back([] {
|
||||||
|
delete filterDisplacementInstance;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Filter::Displacement::Displacement() {
|
Filter::Displacement::Displacement() {
|
||||||
memset(&sourceInfo, 0, sizeof(obs_source_info));
|
memset(&sourceInfo, 0, sizeof(obs_source_info));
|
||||||
sourceInfo.id = "obs-stream-effects-filter-displacement";
|
sourceInfo.id = "obs-stream-effects-filter-displacement";
|
||||||
|
|
|
@ -19,6 +19,10 @@
|
||||||
|
|
||||||
#include "filter-shape.h"
|
#include "filter-shape.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#pragma warning (push)
|
#pragma warning (push)
|
||||||
|
@ -29,10 +33,16 @@ extern "C" {
|
||||||
#pragma warning (pop)
|
#pragma warning (pop)
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <string>
|
// Initializer & Finalizer
|
||||||
#include <vector>
|
static Filter::Shape* filterShapeInstance;
|
||||||
#include <map>
|
INITIALIZER(FilterShapeInit) {
|
||||||
#include <memory>
|
initializerFunctions.push_back([] {
|
||||||
|
filterShapeInstance = new Filter::Shape();
|
||||||
|
});
|
||||||
|
finalizerFunctions.push_back([] {
|
||||||
|
delete filterShapeInstance;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
typedef std::pair<uint32_t, std::string> cacheKey;
|
typedef std::pair<uint32_t, std::string> cacheKey;
|
||||||
typedef std::pair<std::string, std::string> cacheValue;
|
typedef std::pair<std::string, std::string> cacheValue;
|
||||||
|
@ -66,6 +76,7 @@ static void initialize() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Filter::Shape::Shape() {
|
Filter::Shape::Shape() {
|
||||||
|
return; // Disabled for the time being. 3D Transform is better for this.
|
||||||
memset(&sourceInfo, 0, sizeof(obs_source_info));
|
memset(&sourceInfo, 0, sizeof(obs_source_info));
|
||||||
sourceInfo.id = "obs-stream-effects-filter-shape";
|
sourceInfo.id = "obs-stream-effects-filter-shape";
|
||||||
sourceInfo.type = OBS_SOURCE_TYPE_FILTER;
|
sourceInfo.type = OBS_SOURCE_TYPE_FILTER;
|
||||||
|
@ -84,7 +95,6 @@ Filter::Shape::Shape() {
|
||||||
sourceInfo.video_tick = video_tick;
|
sourceInfo.video_tick = video_tick;
|
||||||
sourceInfo.video_render = video_render;
|
sourceInfo.video_render = video_render;
|
||||||
|
|
||||||
// Disabled for the time being. 3D Transform is better for this.
|
|
||||||
obs_register_source(&sourceInfo);
|
obs_register_source(&sourceInfo);
|
||||||
|
|
||||||
initialize();
|
initialize();
|
||||||
|
|
|
@ -30,6 +30,17 @@ extern "C" {
|
||||||
#pragma warning (pop)
|
#pragma warning (pop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initializer & Finalizer
|
||||||
|
static Filter::Transform* filterTransformInstance;
|
||||||
|
INITIALIZER(FilterTransformInit) {
|
||||||
|
initializerFunctions.push_back([] {
|
||||||
|
filterTransformInstance = new Filter::Transform();
|
||||||
|
});
|
||||||
|
finalizerFunctions.push_back([] {
|
||||||
|
delete filterTransformInstance;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#define ST "Filter.Transform"
|
#define ST "Filter.Transform"
|
||||||
#define ST_CAMERA "Filter.Transform.Camera"
|
#define ST_CAMERA "Filter.Transform.Camera"
|
||||||
#define ST_CAMERA_ORTHOGRAPHIC "Filter.Transform.Camera.Orthographic"
|
#define ST_CAMERA_ORTHOGRAPHIC "Filter.Transform.Camera.Orthographic"
|
||||||
|
|
|
@ -35,9 +35,6 @@ std::list<std::function<void()>> initializerFunctions;
|
||||||
std::list<std::function<void()>> finalizerFunctions;
|
std::list<std::function<void()>> finalizerFunctions;
|
||||||
|
|
||||||
MODULE_EXPORT bool obs_module_load(void) {
|
MODULE_EXPORT bool obs_module_load(void) {
|
||||||
filterDisplacement = new Filter::Displacement();
|
|
||||||
filterShape = new Filter::Shape();
|
|
||||||
filterTransform = new Filter::Transform();
|
|
||||||
for (auto func : initializerFunctions) {
|
for (auto func : initializerFunctions) {
|
||||||
func();
|
func();
|
||||||
}
|
}
|
||||||
|
@ -48,9 +45,6 @@ MODULE_EXPORT void obs_module_unload(void) {
|
||||||
for (auto func : finalizerFunctions) {
|
for (auto func : finalizerFunctions) {
|
||||||
func();
|
func();
|
||||||
}
|
}
|
||||||
delete filterTransform;
|
|
||||||
delete filterShape;
|
|
||||||
delete filterDisplacement;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MODULE_EXPORT const char* obs_module_name() {
|
MODULE_EXPORT const char* obs_module_name() {
|
||||||
|
|
|
@ -43,13 +43,14 @@ enum class ScalingMethod : int64_t {
|
||||||
Lanczos,
|
Lanczos,
|
||||||
};
|
};
|
||||||
|
|
||||||
Source::MirrorAddon* inst;
|
// Initializer & Finalizer
|
||||||
|
Source::MirrorAddon* sourceMirrorInstance;
|
||||||
INITIALIZER(SourceMirrorInit) {
|
INITIALIZER(SourceMirrorInit) {
|
||||||
initializerFunctions.push_back([] {
|
initializerFunctions.push_back([] {
|
||||||
inst = new Source::MirrorAddon();
|
sourceMirrorInstance = new Source::MirrorAddon();
|
||||||
});
|
});
|
||||||
finalizerFunctions.push_back([] {
|
finalizerFunctions.push_back([] {
|
||||||
delete inst;
|
delete sourceMirrorInstance;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue