New upstream version 19.0.3+dfsg1

This commit is contained in:
Sebastian Ramacher 2017-06-29 21:01:10 +02:00
parent 3708b8e092
commit 1f1bbb3518
534 changed files with 13862 additions and 2459 deletions

View file

@ -22,6 +22,7 @@ set(obs-filters_SOURCES
obs-filters.c
color-correction-filter.c
async-delay-filter.c
gpu-delay.c
crop-filter.c
scale-filter.c
scroll-filter.c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Before After
Before After

View file

@ -0,0 +1,10 @@
ColorFilter="রং এর সংশোধনী"
CropFilter="ফসল/প্যাড"
ScrollFilter="নিচে স্ক্রোল করুন"
SharpnessFilter="ধার"
ScaleFilter="স্কেল/দৃশ্যরূপ অনুপাত"
Gain="মোহ"
DelayMs="বিলম্ব (মিলিসেকেন্ড)"
Type="নমুনা"
MaskBlendType.MaskColor="আলফা মুখোশ (রং চ্যানেল)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma Key"
ColorKeyFilter="Klíč barvy"
SharpnessFilter="Ostření"
ScaleFilter="Škálování/poměr stran"
GPUDelayFilter="Zpoždění vykreslování"
UndistortCenter="Zlepší střed obrázku při škálování z ultra-širokého obrazu"
NoiseGate="Šumová brána"
NoiseSuppress="Potlačení šumu"
@ -66,4 +67,10 @@ NoiseSuppress.SuppressLevel="Úroveň potlačení (dB)"
Saturation="Saturace"
HueShift="Posun odstínu"
Amount="Množství"
Compressor="Kompresor"
Compressor.Ratio="Poměr (X:1)"
Compressor.Threshold="Práh (v dB)"
Compressor.AttackTime="Stažení (v ms)"
Compressor.ReleaseTime="Uvolnění (v ms)"
Compressor.OutputGain="Síla výstupu (v dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma nøgle"
ColorKeyFilter="Farvenøgle"
SharpnessFilter="Skarphed"
ScaleFilter="Skalering/Formatforhold"
GPUDelayFilter="Renderingsforsinkelse"
UndistortCenter="Fjern forvrængning af billedets midte ved skalering fra ultrabred"
NoiseGate="Noise Gate"
NoiseSuppress="Støjundertrykkelse"
@ -66,4 +67,10 @@ NoiseSuppress.SuppressLevel="Undertrykkelsesniveau (dB)"
Saturation="Mætning"
HueShift="Nuanceskift"
Amount="Værdi"
Compressor="Kompressor"
Compressor.Ratio="Forhold (X:1)"
Compressor.Threshold="Grænse (dB)"
Compressor.AttackTime="Attack (ms)"
Compressor.ReleaseTime="Release (ms)"
Compressor.OutputGain="Output øgning (dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma Key"
ColorKeyFilter="Color Key"
SharpnessFilter="Schärfen"
ScaleFilter="Skalierung/Seitenverhältnis"
GPUDelayFilter="Renderverzögerung"
UndistortCenter="Entzerre Mitte des Bildes bei der Skalierung von Ultraweitwinkel"
NoiseGate="Noise Gate"
NoiseSuppress="Rauschunterdrückung"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma Key"
ColorKeyFilter="Color Key"
SharpnessFilter="Sharpen"
ScaleFilter="Scaling/Aspect Ratio"
GPUDelayFilter="Render Delay"
UndistortCenter="Undistort center of image when scaling from ultrawide"
NoiseGate="Noise Gate"
NoiseSuppress="Noise Suppression"

View file

@ -1,13 +1,14 @@
ColorFilter="Corrección de color"
ColorGradeFilter="Aplicar LUT"
MaskFilter="Imagen máscara/mezcla"
AsyncDelayFilter="Demora de Video (asincróno)"
AsyncDelayFilter="Retardo de Video (asincróno)"
CropFilter="Recortar/Acolchar"
ScrollFilter="desplazamiento"
ChromaKeyFilter="Fondro croma"
ColorKeyFilter="Filtro de color"
SharpnessFilter="Filtro de enfoque"
ScaleFilter="Escala/Relación de Aspecto"
GPUDelayFilter="Retardo de procesamiento"
UndistortCenter="No distorsionar el centro de la imagen en escalar des de una ultrapanorámica"
NoiseGate="Puerta anti-ruidos"
NoiseSuppress="Eliminación de ruido"

View file

@ -1,10 +1,20 @@
ColorFilter="Värvi korrektsioon"
ColorGradeFilter="Lisa LUT"
CropFilter="Kärbi/Padding"
ScrollFilter="Kerimine"
ChromaKeyFilter="Chroma Efekt"
SharpnessFilter="Teravda"
Gain="Võimendus"
DelayMs="Viivitus (millisekundites)"
Type="Tüüp"
Path="Tee"
Color="Värv"
Opacity="Läbipaistvus"
Contrast="Kontrast"
Brightness="Heledus"
Gamma="Gamma"
BrowsePath.Images="Kõik pildifailid"
BrowsePath.AllFiles="Kõik failid"
Crop.Left="Vasakult"
Crop.Right="Paremalt"
Crop.Top="Ülevalt"
@ -12,5 +22,17 @@ Crop.Bottom="Alt"
Crop.Width="Laius"
Crop.Height="Kõrgus"
Crop.Relative="Suhteline"
ScrollFilter.SpeedY="Vertikaalne kiirus"
ScrollFilter.LimitWidth="Piira laiust"
ScrollFilter.LimitHeight="Piira kõrgust"
Red="Punane"
Green="Roheline"
Blue="Sinine"
Gain.GainDB="Võimendus (dB)"
None="Määramata"
ScaleFiltering.Point="Punkt"
Saturation="Küllastatus"
Amount="Kogus"
Compressor.Ratio="Suhe (X:1)"
Compressor.OutputGain="Väljundi võimendus (dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Kroma gakoa"
ColorKeyFilter="Kolore gakoa"
SharpnessFilter="Enfokea"
ScaleFilter="Eskala/Aspektu-erlazioa"
GPUDelayFilter="Errendatzearen atzerapena"
UndistortCenter="Ez distortsionatu irudiaren erdigunea ultra zabala eskalatzean"
NoiseGate="Zarata atalasea"
NoiseSuppress="Zarata kendu"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Läpinäkyvä tausta"
ColorKeyFilter="Väriavain"
SharpnessFilter="Terävöitä"
ScaleFilter="Skaalaus/Kuvasuhde"
GPUDelayFilter="Renderoinnin viive"
UndistortCenter="Poista vääristymä keskeltä kuvaa skaalattaessa ultra-leveästä"
NoiseGate="Noise Gate"
NoiseSuppress="Melunvaimennus"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma kulcs"
ColorKeyFilter="Színkulcs"
SharpnessFilter="Élesítés"
ScaleFilter="Méretezés/Képarány"
GPUDelayFilter="Render késleltetés"
UndistortCenter="Kép közepének zavarosságának a csökkentése ultraszélesről való skálázás esetén"
NoiseGate="Zajgát"
NoiseSuppress="Zajcsökkentés"

View file

@ -64,4 +64,11 @@ ScaleFiltering.Lanczos="Lanczos"
NoiseSuppress.SuppressLevel="Livello di soppressione (dB)"
Saturation="Saturazione"
HueShift="Cambio di tonalità"
Amount="Quantità"
Compressor="Compressore"
Compressor.Ratio="Rapporto (X:1)"
Compressor.Threshold="Soglia (dB)"
Compressor.AttackTime="Attacco (ms)"
Compressor.ReleaseTime="Rilascio (ms)"
Compressor.OutputGain="Guadagno di uscita (dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="クロマキー"
ColorKeyFilter="カラーキー"
SharpnessFilter="シャープ"
ScaleFilter="スケーリング/アスペクト比"
GPUDelayFilter="レンダリング遅延"
UndistortCenter="超広角からスケーリングするときに画像の中心を歪めない"
NoiseGate="ノイズゲート"
NoiseSuppress="ノイズ抑制"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="크로마 키"
ColorKeyFilter="색상 키"
SharpnessFilter="선명하게"
ScaleFilter="비례축소/가로세로 비율"
GPUDelayFilter="렌더링 지연"
UndistortCenter="울트라와이드에서 크기조정 시 이미지 중앙의 왜곡을 수정"
NoiseGate="노이즈 게이트"
NoiseSuppress="소음 억제"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Chroma Key"
ColorKeyFilter="Color Key"
SharpnessFilter="Verscherpen"
ScaleFilter="Schalen/Aspect Ratio"
GPUDelayFilter="Rendervertraging"
UndistortCenter="Verbeter beeldverhouding in het midden van bij schalen vanaf ultrawide"
NoiseGate="Noise Gate"
NoiseSuppress="Ruisonderdrukking"
@ -66,4 +67,10 @@ NoiseSuppress.SuppressLevel="Onderdrukkingsniveau (dB)"
Saturation="Verzadiging"
HueShift="Tintverschuiving"
Amount="Hoeveelheid"
Compressor="Compressor"
Compressor.Ratio="Verhouding (X:1)"
Compressor.Threshold="Drempel (dB)"
Compressor.AttackTime="Attack (ms)"
Compressor.ReleaseTime="Release (ms)"
Compressor.OutputGain="Uitvoergain (dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Kluczowanie koloru (chroma key)"
ColorKeyFilter="Kluczowanie koloru (kolor)"
SharpnessFilter="Wyostrzanie"
ScaleFilter="Skalowanie/proporcje"
GPUDelayFilter="Opóźnienie renderowania"
UndistortCenter="Usuń przekłamania przy skalowaniu źródeł o dużej szerokości"
NoiseGate="Bramka szumów"
NoiseSuppress="Tłumienie hałasu"

View file

@ -1,11 +1,15 @@
ColorFilter="Correção de cor"
ColorGradeFilter="Aplicar LUT"
MaskFilter="Máscara/mistura de imagem"
AsyncDelayFilter="Atraso de vídeo (Async)"
CropFilter="Recortar/Preencher"
ScrollFilter="Rolagem"
ChromaKeyFilter="Chroma Key"
ColorKeyFilter="Color Key"
SharpnessFilter="Nitidez"
ScaleFilter="Dimensionamento/proporção"
GPUDelayFilter="Atraso de Renderização"
UndistortCenter="Remover distorção do centro da imagem ao redimensionar de ultralargo"
NoiseGate="Filtro de Rúido"
NoiseSuppress="Redução de ruídos"
Gain="Ganho"
@ -47,9 +51,9 @@ Blue="Azul"
Magenta="Magenta"
NoiseGate.OpenThreshold="Limite de Abertura (dB)"
NoiseGate.CloseThreshold="Limite de Fecho (dB)"
NoiseGate.AttackTime="Tempo de ataque (milissegundos)"
NoiseGate.AttackTime="Tempo de Ataque (milissegundos)"
NoiseGate.HoldTime="Tempo de Bloqueio (milissegundos)"
NoiseGate.ReleaseTime="Tempo de libertação (milissegundos)"
NoiseGate.ReleaseTime="Tempo de liberação (milissegundos)"
Gain.GainDB="Ganho (dB)"
StretchImage="Esticar a Imagem (descartar aspecto da imagem)"
Resolution="Resolução"
@ -60,4 +64,13 @@ ScaleFiltering.Bilinear="Bilinear"
ScaleFiltering.Bicubic="Bicúbico"
ScaleFiltering.Lanczos="Lanczos"
NoiseSuppress.SuppressLevel="Nível de redução (dB)"
Saturation="Saturação"
HueShift="Alteração de matiz"
Amount="Valor"
Compressor="Compressor"
Compressor.Ratio="Razão (X:1)"
Compressor.Threshold="Limiar (dB)"
Compressor.AttackTime="Ataque (ms)"
Compressor.ReleaseTime="Liberação (ms)"
Compressor.OutputGain="Ganho na saída (dB)"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Хромакей"
ColorKeyFilter="Цветовой ключ"
SharpnessFilter="Увеличить резкость"
ScaleFilter="Коэффициент Масштабирования/Аспект"
GPUDelayFilter="Задержка отображения"
UndistortCenter="Не искривлять центр изображения при масштабировании Ultrawide разрешения"
NoiseGate="Подавление шума"
NoiseSuppress="Шумоподавление"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Kromafilter"
ColorKeyFilter="Färgfilter"
SharpnessFilter="Skärpa"
ScaleFilter="Skalning/Bildförhållande"
GPUDelayFilter="Renderingsfördröjning"
NoiseGate="Brusblockering"
NoiseSuppress="Brusreducering"
Gain="Förstärkning"

View file

@ -1,13 +1,14 @@
ColorFilter="Renk Düzeltme"
ColorGradeFilter="LUT Uygula"
MaskFilter="Görüntü Maskesi/Blend"
AsyncDelayFilter="Görüntü Gecikmesi (Async)"
AsyncDelayFilter="Görüntü Gecikmesi (Eşzamansız)"
CropFilter="Kes/Kaydır"
ScrollFilter="Kaydır"
ChromaKeyFilter="Chroma Anahtarı"
ColorKeyFilter="Renk Anahtarı"
SharpnessFilter="Keskinleştirme"
ScaleFilter="Ölçeklendirme/Boy Oranı"
ScaleFilter="Boyutlandırma/En-Boy Oranı"
GPUDelayFilter="İşleyici Gecikmesi"
UndistortCenter="Ultra genişten boyutlandırırken görüntü merkezindeki bozulmayı düzelt"
NoiseGate="Gürültü Filtresi"
NoiseSuppress="Gürültü Bastırma"
@ -54,7 +55,7 @@ NoiseGate.AttackTime="Atak Süresi (milisaniye)"
NoiseGate.HoldTime="Kavrama Süresi (milisaniye)"
NoiseGate.ReleaseTime="Bırakma Süresi (milisaniye)"
Gain.GainDB="Kazanç (dB)"
StretchImage="Görüntüyü Uzat (görüntü boy oranını görmezden gelir)"
StretchImage="Görüntüyü Uzat (görüntü en-boy oranını görmezden gel)"
Resolution="Çözünürlük"
None="Hiçbiri"
ScaleFiltering="Ölçek Filtreleme"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="Зелений екран"
ColorKeyFilter="Фільтрування за кольором"
SharpnessFilter="Різкість"
ScaleFilter="Масштабування/пропорції"
GPUDelayFilter="Затримка візуалізації"
UndistortCenter="Зменшити викривлення у центрі, якщо масштабувати з надширокоформатного"
NoiseGate="Пороговий шумопонижувач"
NoiseSuppress="Подавлення шуму"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="色度键"
ColorKeyFilter="色值"
SharpnessFilter="锐化"
ScaleFilter="缩放比例"
GPUDelayFilter="渲染延迟"
UndistortCenter="当从超宽扩展时, 让图片中心不失真"
NoiseGate="噪音阈值"
NoiseSuppress="噪声抑制"

View file

@ -8,6 +8,7 @@ ChromaKeyFilter="色度鍵"
ColorKeyFilter="色彩鍵"
SharpnessFilter="銳化"
ScaleFilter="縮放/長寬比"
GPUDelayFilter="繪製延遲"
UndistortCenter="從超寬影像縮放時彌補影像中心的畸變"
NoiseGate="噪音閾"
NoiseSuppress="雜訊抑制"
@ -66,4 +67,10 @@ NoiseSuppress.SuppressLevel="抑制標準 (dB)"
Saturation="飽合度"
HueShift="色調偏移"
Amount="影響總量"
Compressor="動態壓縮處理器"
Compressor.Ratio="比率 (X:1)"
Compressor.Threshold="閾值 (dB)"
Compressor.AttackTime="起始時間 (ms)"
Compressor.ReleaseTime="釋放時間 (ms)"
Compressor.OutputGain="輸出增益 (dB)"

View file

@ -0,0 +1,265 @@
#include <obs-module.h>
#include <util/circlebuf.h>
#define S_DELAY_MS "delay_ms"
#define T_DELAY_MS obs_module_text("DelayMs")
struct frame {
gs_texrender_t *render;
uint64_t ts;
};
struct gpu_delay_filter_data {
obs_source_t *context;
struct circlebuf frames;
uint64_t delay_ns;
uint64_t interval_ns;
uint32_t cx;
uint32_t cy;
bool target_valid;
bool processed_frame;
};
static const char *gpu_delay_filter_get_name(void *unused)
{
UNUSED_PARAMETER(unused);
return obs_module_text("GPUDelayFilter");
}
static void free_textures(struct gpu_delay_filter_data *f)
{
obs_enter_graphics();
while (f->frames.size) {
struct frame frame;
circlebuf_pop_front(&f->frames, &frame, sizeof(frame));
gs_texrender_destroy(frame.render);
}
circlebuf_free(&f->frames);
obs_leave_graphics();
}
static size_t num_frames(struct circlebuf *buf)
{
return buf->size / sizeof(struct frame);
}
static void update_interval(struct gpu_delay_filter_data *f,
uint64_t new_interval_ns)
{
if (!f->target_valid) {
free_textures(f);
return;
}
f->interval_ns = new_interval_ns;
size_t num = (size_t)(f->delay_ns / new_interval_ns);
if (num > num_frames(&f->frames)) {
size_t prev_num = num_frames(&f->frames);
obs_enter_graphics();
circlebuf_upsize(&f->frames, num * sizeof(struct frame));
for (size_t i = prev_num; i < num; i++) {
struct frame *frame = circlebuf_data(&f->frames,
i * sizeof(*frame));
frame->render = gs_texrender_create(GS_RGBA, GS_ZS_NONE);
}
obs_leave_graphics();
} else if (num < num_frames(&f->frames)) {
obs_enter_graphics();
while (num_frames(&f->frames) > num) {
struct frame frame;
circlebuf_pop_front(&f->frames, &frame, sizeof(frame));
gs_texrender_destroy(frame.render);
}
obs_leave_graphics();
}
}
static inline void check_interval(struct gpu_delay_filter_data *f)
{
struct obs_video_info ovi = {0};
uint64_t interval_ns;
obs_get_video_info(&ovi);
interval_ns = (uint64_t)ovi.fps_den * 1000000000ULL /
(uint64_t)ovi.fps_num;
if (interval_ns != f->interval_ns)
update_interval(f, interval_ns);
}
static inline void reset_textures(struct gpu_delay_filter_data *f)
{
f->interval_ns = 0;
free_textures(f);
check_interval(f);
}
static inline bool check_size(struct gpu_delay_filter_data *f)
{
obs_source_t *target = obs_filter_get_target(f->context);
uint32_t cx;
uint32_t cy;
f->target_valid = !!target;
if (!f->target_valid)
return true;
cx = obs_source_get_base_width(target);
cy = obs_source_get_base_height(target);
f->target_valid = !!cx && !!cy;
if (!f->target_valid)
return true;
if (cx != f->cx || cy != f->cy) {
f->cx = cx;
f->cy = cy;
reset_textures(f);
return true;
}
return false;
}
static void gpu_delay_filter_update(void *data, obs_data_t *s)
{
struct gpu_delay_filter_data *f = data;
f->delay_ns = (uint64_t)obs_data_get_int(s, S_DELAY_MS) * 1000000ULL;
/* full reset */
f->cx = 0;
f->cy = 0;
f->interval_ns = 0;
free_textures(f);
}
static obs_properties_t *gpu_delay_filter_properties(void *data)
{
obs_properties_t *props = obs_properties_create();
obs_properties_add_int(props, S_DELAY_MS, T_DELAY_MS, 0, 500, 1);
UNUSED_PARAMETER(data);
return props;
}
static void *gpu_delay_filter_create(obs_data_t *settings, obs_source_t *context)
{
struct gpu_delay_filter_data *f = bzalloc(sizeof(*f));
f->context = context;
obs_source_update(context, settings);
return f;
}
static void gpu_delay_filter_destroy(void *data)
{
struct gpu_delay_filter_data *f = data;
free_textures(f);
bfree(f);
}
static void gpu_delay_filter_tick(void *data, float t)
{
struct gpu_delay_filter_data *f = data;
uint64_t cur_time = obs_get_video_frame_time();
f->processed_frame = false;
if (check_size(f))
return;
check_interval(f);
}
static void draw_frame(struct gpu_delay_filter_data *f)
{
struct frame frame;
circlebuf_peek_front(&f->frames, &frame, sizeof(frame));
gs_effect_t *effect = obs_get_base_effect(OBS_EFFECT_DEFAULT);
gs_texture_t *tex = gs_texrender_get_texture(frame.render);
if (tex) {
gs_eparam_t *image =
gs_effect_get_param_by_name(effect, "image");
gs_effect_set_texture(image, tex);
while (gs_effect_loop(effect, "Draw"))
gs_draw_sprite(tex, 0, f->cx, f->cy);
}
}
static void gpu_delay_filter_render(void *data, gs_effect_t *effect)
{
struct gpu_delay_filter_data *f = data;
obs_source_t *target = obs_filter_get_target(f->context);
obs_source_t *parent = obs_filter_get_parent(f->context);
if (!f->target_valid || !target || !parent || !f->frames.size) {
obs_source_skip_video_filter(f->context);
return;
}
if (f->processed_frame) {
draw_frame(f);
return;
}
struct frame frame;
circlebuf_pop_front(&f->frames, &frame, sizeof(frame));
gs_texrender_reset(frame.render);
gs_blend_state_push();
gs_blend_function(GS_BLEND_ONE, GS_BLEND_ZERO);
if (gs_texrender_begin(frame.render, f->cx, f->cy)) {
uint32_t parent_flags = obs_source_get_output_flags(target);
bool custom_draw = (parent_flags & OBS_SOURCE_CUSTOM_DRAW) != 0;
bool async = (parent_flags & OBS_SOURCE_ASYNC) != 0;
struct vec4 clear_color;
vec4_zero(&clear_color);
gs_clear(GS_CLEAR_COLOR, &clear_color, 0.0f, 0);
gs_ortho(0.0f, (float)f->cx, 0.0f, (float)f->cy,
-100.0f, 100.0f);
if (target == parent && !custom_draw && !async)
obs_source_default_render(target);
else
obs_source_video_render(target);
gs_texrender_end(frame.render);
}
gs_blend_state_pop();
circlebuf_push_back(&f->frames, &frame, sizeof(frame));
draw_frame(f);
f->processed_frame = true;
UNUSED_PARAMETER(effect);
}
struct obs_source_info gpu_delay_filter = {
.id = "gpu_delay",
.type = OBS_SOURCE_TYPE_FILTER,
.output_flags = OBS_SOURCE_VIDEO,
.get_name = gpu_delay_filter_get_name,
.create = gpu_delay_filter_create,
.destroy = gpu_delay_filter_destroy,
.update = gpu_delay_filter_update,
.get_properties = gpu_delay_filter_properties,
.video_tick = gpu_delay_filter_tick,
.video_render = gpu_delay_filter_render
};

View file

@ -11,6 +11,7 @@ extern struct obs_source_info gain_filter;
extern struct obs_source_info color_filter;
extern struct obs_source_info scale_filter;
extern struct obs_source_info scroll_filter;
extern struct obs_source_info gpu_delay_filter;
extern struct obs_source_info color_key_filter;
extern struct obs_source_info color_grade_filter;
extern struct obs_source_info sharpness_filter;
@ -30,6 +31,7 @@ bool obs_module_load(void)
obs_register_source(&color_filter);
obs_register_source(&scale_filter);
obs_register_source(&scroll_filter);
obs_register_source(&gpu_delay_filter);
obs_register_source(&color_key_filter);
obs_register_source(&color_grade_filter);
obs_register_source(&sharpness_filter);

View file

@ -38,10 +38,10 @@ struct scale_filter_data {
int cy_out;
enum obs_scale_type sampling;
gs_samplerstate_t *point_sampler;
bool aspect_ratio_only : 1;
bool target_valid : 1;
bool valid : 1;
bool undistort : 1;
bool aspect_ratio_only;
bool target_valid;
bool valid;
bool undistort;
};
static const char *scale_filter_name(void *unused)