New upstream version 23.2.1+dfsg1
This commit is contained in:
parent
cdc9a9fc87
commit
b14f9eae6d
1017 changed files with 37232 additions and 11111 deletions
|
|
@ -1,13 +1,23 @@
|
|||
project(obs-filters)
|
||||
|
||||
find_package(Libspeexdsp QUIET)
|
||||
if(LIBSPEEXDSP_FOUND)
|
||||
set(obs-filters_LIBSPEEXDSP_SOURCES
|
||||
noise-suppress-filter.c)
|
||||
set(obs-filters_LIBSPEEXDSP_LIBRARIES
|
||||
${LIBSPEEXDSP_LIBRARIES})
|
||||
option(DISABLE_SPEEXDSP "Disable building of the SpeexDSP-based Noise Suppression filter" OFF)
|
||||
|
||||
if(DISABLE_SPEEXDSP)
|
||||
message(STATUS "SpeexDSP support disabled")
|
||||
set(LIBSPEEXDSP_FOUND FALSE)
|
||||
else()
|
||||
message(STATUS "Speexdsp library not found, speexdsp filters disabled")
|
||||
find_package(Libspeexdsp QUIET)
|
||||
|
||||
if(NOT LIBSPEEXDSP_FOUND)
|
||||
message(STATUS "SpeexDSP support not found")
|
||||
set(LIBSPEEXDSP_FOUND FALSE)
|
||||
else()
|
||||
message(STATUS "SpeexDSP supported")
|
||||
set(obs-filters_LIBSPEEXDSP_SOURCES
|
||||
noise-suppress-filter.c)
|
||||
set(obs-filters_LIBSPEEXDSP_LIBRARIES
|
||||
${LIBSPEEXDSP_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/obs-filters-config.h.in"
|
||||
|
|
@ -38,7 +48,11 @@ set(obs-filters_SOURCES
|
|||
gain-filter.c
|
||||
noise-gate-filter.c
|
||||
mask-filter.c
|
||||
compressor-filter.c)
|
||||
invert-audio-polarity.c
|
||||
compressor-filter.c
|
||||
limiter-filter.c
|
||||
expander-filter.c
|
||||
luma-key-filter.c)
|
||||
|
||||
add_library(obs-filters MODULE
|
||||
${obs-filters_SOURCES}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ struct chroma_key_filter_data {
|
|||
|
||||
gs_eparam_t *pixel_size_param;
|
||||
gs_eparam_t *chroma_param;
|
||||
gs_eparam_t *key_rgb_param;
|
||||
gs_eparam_t *similarity_param;
|
||||
gs_eparam_t *smoothness_param;
|
||||
gs_eparam_t *spill_param;
|
||||
|
|
@ -45,7 +44,6 @@ struct chroma_key_filter_data {
|
|||
float brightness;
|
||||
float gamma;
|
||||
|
||||
struct vec4 key_rgb;
|
||||
struct vec2 chroma;
|
||||
float similarity;
|
||||
float smoothness;
|
||||
|
|
@ -97,6 +95,7 @@ static inline void chroma_settings_update(
|
|||
SETTING_KEY_COLOR);
|
||||
const char *key_type = obs_data_get_string(settings,
|
||||
SETTING_COLOR_TYPE);
|
||||
struct vec4 key_rgb;
|
||||
struct vec4 key_color_v4;
|
||||
struct matrix4 yuv_mat_m4;
|
||||
|
||||
|
|
@ -107,10 +106,10 @@ static inline void chroma_settings_update(
|
|||
else if (strcmp(key_type, "magenta") == 0)
|
||||
key_color = 0xFF00FF;
|
||||
|
||||
vec4_from_rgba(&filter->key_rgb, key_color | 0xFF000000);
|
||||
vec4_from_rgba(&key_rgb, key_color | 0xFF000000);
|
||||
|
||||
memcpy(&yuv_mat_m4, yuv_mat, sizeof(yuv_mat));
|
||||
vec4_transform(&key_color_v4, &filter->key_rgb, &yuv_mat_m4);
|
||||
vec4_transform(&key_color_v4, &key_rgb, &yuv_mat_m4);
|
||||
vec2_set(&filter->chroma, key_color_v4.y, key_color_v4.z);
|
||||
|
||||
filter->similarity = (float)similarity / 1000.0f;
|
||||
|
|
@ -161,8 +160,6 @@ static void *chroma_key_create(obs_data_t *settings, obs_source_t *context)
|
|||
filter->effect, "gamma");
|
||||
filter->chroma_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "chroma_key");
|
||||
filter->key_rgb_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "key_rgb");
|
||||
filter->pixel_size_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "pixel_size");
|
||||
filter->similarity_param = gs_effect_get_param_by_name(
|
||||
|
|
@ -205,7 +202,6 @@ static void chroma_key_render(void *data, gs_effect_t *effect)
|
|||
gs_effect_set_float(filter->brightness_param, filter->brightness);
|
||||
gs_effect_set_float(filter->gamma_param, filter->gamma);
|
||||
gs_effect_set_vec2(filter->chroma_param, &filter->chroma);
|
||||
gs_effect_set_vec4(filter->key_rgb_param, &filter->key_rgb);
|
||||
gs_effect_set_vec2(filter->pixel_size_param, &pixel_size);
|
||||
gs_effect_set_float(filter->similarity_param, filter->similarity);
|
||||
gs_effect_set_float(filter->smoothness_param, filter->smoothness);
|
||||
|
|
@ -251,7 +247,8 @@ static obs_properties_t *chroma_key_properties(void *data)
|
|||
obs_properties_add_int_slider(props, SETTING_SPILL,
|
||||
TEXT_SPILL, 1, 1000, 1);
|
||||
|
||||
obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
|
||||
obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
|
||||
0, 100, 1);
|
||||
obs_properties_add_float_slider(props, SETTING_CONTRAST,
|
||||
TEXT_CONTRAST, -1.0, 1.0, 0.01);
|
||||
obs_properties_add_float_slider(props, SETTING_BRIGHTNESS,
|
||||
|
|
|
|||
|
|
@ -218,7 +218,8 @@ static obs_properties_t *color_key_properties(void *data)
|
|||
obs_properties_add_int_slider(props, SETTING_SMOOTHNESS,
|
||||
TEXT_SMOOTHNESS, 1, 1000, 1);
|
||||
|
||||
obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
|
||||
obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
|
||||
0, 100, 1);
|
||||
obs_properties_add_float_slider(props, SETTING_CONTRAST,
|
||||
TEXT_CONTRAST, -1.0, 1.0, 0.01);
|
||||
obs_properties_add_float_slider(props, SETTING_BRIGHTNESS,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ uniform float brightness;
|
|||
uniform float gamma;
|
||||
|
||||
uniform float2 chroma_key;
|
||||
uniform float4 key_rgb;
|
||||
uniform float2 pixel_size;
|
||||
uniform float similarity;
|
||||
uniform float smoothness;
|
||||
|
|
@ -55,17 +54,15 @@ float4 SampleTexture(float2 uv)
|
|||
|
||||
float GetBoxFilteredChromaDist(float3 rgb, float2 texCoord)
|
||||
{
|
||||
float distVal = GetChromaDist(rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord-pixel_size).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord-float2(pixel_size.x, 0.0)).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord-float2(pixel_size.x, -pixel_size.y)).rgb);
|
||||
|
||||
distVal += GetChromaDist(SampleTexture(texCoord-float2(0.0, pixel_size.y)).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+float2(0.0, pixel_size.y)).rgb);
|
||||
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+float2(pixel_size.x, -pixel_size.y)).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+float2(pixel_size.x, 0.0)).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+pixel_size).rgb);
|
||||
float2 h_pixel_size = pixel_size / 2.0;
|
||||
float2 point_0 = float2(pixel_size.x, h_pixel_size.y);
|
||||
float2 point_1 = float2(h_pixel_size.x, -pixel_size.y);
|
||||
float distVal = GetChromaDist(SampleTexture(texCoord-point_0).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+point_0).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord-point_1).rgb);
|
||||
distVal += GetChromaDist(SampleTexture(texCoord+point_1).rgb);
|
||||
distVal *= 2.0;
|
||||
distVal += GetChromaDist(rgb);
|
||||
return distVal / 9.0;
|
||||
}
|
||||
|
||||
|
|
@ -76,6 +73,7 @@ float4 ProcessChromaKey(float4 rgba, VertData v_in)
|
|||
float fullMask = pow(saturate(baseMask / smoothness), 1.5);
|
||||
float spillVal = pow(saturate(baseMask / spill), 1.5);
|
||||
|
||||
rgba.rgba *= color;
|
||||
rgba.a *= fullMask;
|
||||
|
||||
float desat = (rgba.r * 0.2126 + rgba.g * 0.7152 + rgba.b * 0.0722);
|
||||
|
|
@ -86,7 +84,7 @@ float4 ProcessChromaKey(float4 rgba, VertData v_in)
|
|||
|
||||
float4 PSChromaKeyRGBA(VertData v_in) : TARGET
|
||||
{
|
||||
float4 rgba = image.Sample(textureSampler, v_in.uv) * color;
|
||||
float4 rgba = image.Sample(textureSampler, v_in.uv);
|
||||
return ProcessChromaKey(rgba, v_in);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,17 +39,9 @@ float GetColorDist(float3 rgb)
|
|||
return distance(key_color.rgb, rgb);
|
||||
}
|
||||
|
||||
float4 SampleYUVToRGB(float2 uv)
|
||||
{
|
||||
float4 yuv = image.Sample(textureSampler, uv);
|
||||
yuv.xyz = clamp(yuv.xyz, color_range_min, color_range_max);
|
||||
return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
|
||||
}
|
||||
|
||||
float4 ProcessColorKey(float4 rgba, VertData v_in)
|
||||
{
|
||||
float colorDist = GetColorDist(rgba.rgb);
|
||||
float baseMask = colorDist - similarity;
|
||||
rgba.a *= saturate(max(colorDist - similarity, 0.0) / smoothness);
|
||||
|
||||
return CalcColor(rgba);
|
||||
|
|
|
|||
4
plugins/obs-filters/data/locale/bg-BG.ini
Normal file
4
plugins/obs-filters/data/locale/bg-BG.ini
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Limiter="Ограничител"
|
||||
Limiter.Threshold="Праг на отсичане (dB)"
|
||||
Limiter.ReleaseTime="Време за отговор (мс)"
|
||||
|
||||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Retard de processament"
|
|||
UndistortCenter="No distorsionis el centre de la imatge en escalar des d'una ultrapanoràmica"
|
||||
NoiseGate="Porta de soroll"
|
||||
NoiseSuppress="Supressió de soroll"
|
||||
InvertPolarity="Inverteix la polaritat"
|
||||
Gain="Guany"
|
||||
DelayMs="Retard (en mil·lisegons)"
|
||||
Type="Tipus"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Temps d'alliberar (mil·lisegons)"
|
|||
Gain.GainDB="Guany (dB)"
|
||||
StretchImage="Expandir imatge (descarta la relació d'aspecte d'imatge)"
|
||||
Resolution="Resolució"
|
||||
Base.Canvas="Resolució base (Llenç)"
|
||||
None="Cap"
|
||||
ScaleFiltering="Escala de filtratge"
|
||||
ScaleFiltering.Point="Punt"
|
||||
ScaleFiltering.Bilinear="Bilineal"
|
||||
ScaleFiltering.Bicubic="Bicúbic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Àrea"
|
||||
NoiseSuppress.SuppressLevel="Nivell de supressió (dB)"
|
||||
Saturation="Saturació"
|
||||
HueShift="Cavi de tonalitat"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Atac (ms)"
|
|||
Compressor.ReleaseTime="Llançament (ms)"
|
||||
Compressor.OutputGain="Guany de sortida (dB)"
|
||||
Compressor.SidechainSource="Font d'atenuació/reducció"
|
||||
Limiter="Límit"
|
||||
Limiter.Threshold="Llindar (dB)"
|
||||
Limiter.ReleaseTime="Llançament (ms)"
|
||||
Expander="Expansor"
|
||||
Expander.Ratio="Ràtio (X:1)"
|
||||
Expander.Threshold="Llindar (dB)"
|
||||
Expander.AttackTime="Atac (ms)"
|
||||
Expander.ReleaseTime="Llançament (ms)"
|
||||
Expander.OutputGain="Guany de sortida (dB)"
|
||||
Expander.Detector="Detecció"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Límit"
|
||||
Expander.None="Cap"
|
||||
Expander.Presets="Predefinits"
|
||||
Expander.Presets.Expander="Expansor"
|
||||
Expander.Presets.Gate="Porta"
|
||||
LumaKeyFilter="Clau Luma"
|
||||
Luma.LumaMax="Màx. Luma"
|
||||
Luma.LumaMin="Mín. Luma"
|
||||
Luma.LumaMaxSmooth="Suavitzat màx. Luma"
|
||||
Luma.LumaMinSmooth="Suavitzat mín. Luma"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ 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"
|
||||
InvertPolarity="Obrátit polaritu"
|
||||
Gain="Zisk"
|
||||
DelayMs="Zpoždění (ms)"
|
||||
Type="Typ"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Čas uvolnění (ms)"
|
|||
Gain.GainDB="Zisk (dB)"
|
||||
StretchImage="Roztáhnout obrázek (ignorovat poměr stran)"
|
||||
Resolution="Rozlišení"
|
||||
Base.Canvas="Základní rozlišení"
|
||||
None="Žádné"
|
||||
ScaleFiltering="Filtrování rozsahu"
|
||||
ScaleFiltering.Point="Bod"
|
||||
ScaleFiltering.Bilinear="Bilineární"
|
||||
ScaleFiltering.Bicubic="Bikubický"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Oblast"
|
||||
NoiseSuppress.SuppressLevel="Úroveň potlačení (dB)"
|
||||
Saturation="Saturace"
|
||||
HueShift="Posun odstínu"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Stažení (v ms)"
|
|||
Compressor.ReleaseTime="Uvolnění (v ms)"
|
||||
Compressor.OutputGain="Síla výstupu (v dB)"
|
||||
Compressor.SidechainSource="Zdroj pro side-chain/ducking"
|
||||
Limiter="Omezovač"
|
||||
Limiter.Threshold="Práh (v dB)"
|
||||
Limiter.ReleaseTime="Uvolnění (v ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Poměr (X:1)"
|
||||
Expander.Threshold="Práh (v dB)"
|
||||
Expander.AttackTime="Stažení (v ms)"
|
||||
Expander.ReleaseTime="Uvolnění (v ms)"
|
||||
Expander.OutputGain="Síla výstupu (v dB)"
|
||||
Expander.Detector="Detekce"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Špičky"
|
||||
Expander.None="Žádná"
|
||||
Expander.Presets="Předvolby"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Brána"
|
||||
LumaKeyFilter="Luma klíč"
|
||||
Luma.LumaMax="Luma maximum"
|
||||
Luma.LumaMin="Luma minimum"
|
||||
Luma.LumaMaxSmooth="Luma maximální vyhlazení"
|
||||
Luma.LumaMinSmooth="Luma minimální vyhlazení"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
ColorFilter="Farvekorrektion"
|
||||
ColorGradeFilter="Anvend LUT"
|
||||
MaskFilter="Billede maske/blanding"
|
||||
AsyncDelayFilter="Video forsinkelse (asynkron)"
|
||||
MaskFilter="Billedmaskering/-blanding"
|
||||
AsyncDelayFilter="Videoforsinkelse (asynkron)"
|
||||
CropFilter="Beskæring/Polstring"
|
||||
ScrollFilter="Rul"
|
||||
ChromaKeyFilter="Chroma nøgle"
|
||||
ChromaKeyFilter="Chroma-nøgle"
|
||||
ColorKeyFilter="Farvenøgle"
|
||||
SharpnessFilter="Skarphed"
|
||||
ScaleFilter="Skalering/Formatforhold"
|
||||
|
|
@ -12,14 +12,15 @@ GPUDelayFilter="Renderingsforsinkelse"
|
|||
UndistortCenter="Fjern forvrængning af billedets midte ved skalering fra ultrabred"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Støjundertrykkelse"
|
||||
InvertPolarity="Invertér polaritet"
|
||||
Gain="Forstærkning"
|
||||
DelayMs="Forsinkelse (millisekunder)"
|
||||
Type="Type"
|
||||
MaskBlendType.MaskColor="Alpha maske (farvekanal)"
|
||||
MaskBlendType.MaskAlpha="Alpha maske (Alpha kanal)"
|
||||
MaskBlendType.BlendMultiply="Blend (formere)"
|
||||
MaskBlendType.BlendAddition="Blanding (tilføjelse)"
|
||||
MaskBlendType.BlendSubtraction="Blanding (subtraktion)"
|
||||
MaskBlendType.MaskColor="Alpha-maske (farvekanal)"
|
||||
MaskBlendType.MaskAlpha="Alpha-maske (Alpha-kanal)"
|
||||
MaskBlendType.BlendMultiply="Bland (formere)"
|
||||
MaskBlendType.BlendAddition="Bland (tilføjelse)"
|
||||
MaskBlendType.BlendSubtraction="Bland (subtraktion)"
|
||||
Path="Sti"
|
||||
Color="Farve"
|
||||
Opacity="Gennemsigtighed"
|
||||
|
|
@ -28,11 +29,11 @@ Brightness="Lysstyrke"
|
|||
Gamma="Gamma"
|
||||
BrowsePath.Images="Alle billedfiler"
|
||||
BrowsePath.AllFiles="Alle filer"
|
||||
KeyColorType="Nøglefarve type"
|
||||
KeyColor="Nøglefarven"
|
||||
Similarity="Lighed (1-1000)"
|
||||
Smoothness="Glathed (1-1000)"
|
||||
ColorSpillReduction="Nøglefarve udslipsreduktion (1-1000)"
|
||||
KeyColorType="Nøglefarvetype"
|
||||
KeyColor="Nøglefarve"
|
||||
Similarity="Lighed (1-1.000)"
|
||||
Smoothness="Glathed (1-1.000)"
|
||||
ColorSpillReduction="Nøglefarve udslipsreduktion (1-1.000)"
|
||||
Crop.Left="Venstre"
|
||||
Crop.Right="Højre"
|
||||
Crop.Top="Top"
|
||||
|
|
@ -44,25 +45,27 @@ ScrollFilter.SpeedX="Horisontal hastighed"
|
|||
ScrollFilter.SpeedY="Vertikal hastighed"
|
||||
ScrollFilter.LimitWidth="Begræns bredde"
|
||||
ScrollFilter.LimitHeight="Begræns højde"
|
||||
CustomColor="Brugerdefineret farve"
|
||||
CustomColor="Tilpasset farve"
|
||||
Red="Rød"
|
||||
Green="Grøn"
|
||||
Blue="Blå"
|
||||
Magenta="Magenta"
|
||||
NoiseGate.OpenThreshold="Åbne-tærskel (dB)"
|
||||
NoiseGate.CloseThreshold="Lukke-tærskel (dB)"
|
||||
NoiseGate.AttackTime="Effektueringstid (millisek.)"
|
||||
NoiseGate.OpenThreshold="Åbningstærskel (dB)"
|
||||
NoiseGate.CloseThreshold="Lukningstærskel (dB)"
|
||||
NoiseGate.AttackTime="Responstid (millisek.)"
|
||||
NoiseGate.HoldTime="Holdetid (millisek.)"
|
||||
NoiseGate.ReleaseTime="Frigivelsestid (millisek.)"
|
||||
Gain.GainDB="Forstærkning (dB)"
|
||||
StretchImage="Stræk billedet (ignorer størrelsesforhold)"
|
||||
StretchImage="Stræk billede (ignorér størrelsesforhold)"
|
||||
Resolution="Opløsning"
|
||||
Base.Canvas="Grundopløsning (lærred)"
|
||||
None="Ingen"
|
||||
ScaleFiltering="Skaleringsfilter"
|
||||
ScaleFiltering.Point="Punkt"
|
||||
ScaleFiltering.Bilinear="Bilineær"
|
||||
ScaleFiltering.Bicubic="Bikubisk"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Område"
|
||||
NoiseSuppress.SuppressLevel="Undertrykkelsesniveau (dB)"
|
||||
Saturation="Mætning"
|
||||
HueShift="Nuanceskift"
|
||||
|
|
@ -70,8 +73,29 @@ 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)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking-kilde"
|
||||
Compressor.AttackTime="Responstid (ms)"
|
||||
Compressor.ReleaseTime="Frigivelse (ms)"
|
||||
Compressor.OutputGain="Outputforstærkning (dB)"
|
||||
Compressor.SidechainSource="Sidechain-/Ducking-kilde"
|
||||
Limiter="Begrænser"
|
||||
Limiter.Threshold="Grænse (dB)"
|
||||
Limiter.ReleaseTime="Frigivelse (ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Forhold (X:1)"
|
||||
Expander.Threshold="Grænse (dB)"
|
||||
Expander.AttackTime="Responstid (ms)"
|
||||
Expander.ReleaseTime="Frigivelse (ms)"
|
||||
Expander.OutputGain="Outputforstærkning (dB)"
|
||||
Expander.Detector="Detektering"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Spids"
|
||||
Expander.None="Ingen"
|
||||
Expander.Presets="Forvalg"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Gate"
|
||||
LumaKeyFilter="Luma Key"
|
||||
Luma.LumaMax="Luma maks."
|
||||
Luma.LumaMin="Luma min."
|
||||
Luma.LumaMaxSmooth="Luma maks. glidende"
|
||||
Luma.LumaMinSmooth="Luma min. glidende"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +1,26 @@
|
|||
ColorFilter="Farbkorrektur"
|
||||
ColorGradeFilter="LUT anwenden"
|
||||
MaskFilter="Bild Maske/Blend"
|
||||
MaskFilter="Bildmaske/-Vermischung"
|
||||
AsyncDelayFilter="Videoverzögerung (Asynchron)"
|
||||
CropFilter="Zuschneiden/Pad"
|
||||
ScrollFilter="Bewegung"
|
||||
ChromaKeyFilter="Chroma Key"
|
||||
ColorKeyFilter="Color Key"
|
||||
SharpnessFilter="Schärfen"
|
||||
SharpnessFilter="Schärfung"
|
||||
ScaleFilter="Skalierung/Seitenverhältnis"
|
||||
GPUDelayFilter="Renderverzögerung"
|
||||
UndistortCenter="Entzerre Mitte des Bildes bei der Skalierung von Ultraweitwinkel"
|
||||
UndistortCenter="Mitte des Bildes bei der Skalierung von Ultraweitwinkel entzerren"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Rauschunterdrückung"
|
||||
InvertPolarity="Audiopolarität umkehren"
|
||||
Gain="Gain"
|
||||
DelayMs="Verzögerung (Millisekunden)"
|
||||
Type="Art"
|
||||
MaskBlendType.MaskColor="Alphamaske (Farbkanal)"
|
||||
MaskBlendType.MaskAlpha="Alphamaske (Alphakanal)"
|
||||
MaskBlendType.BlendMultiply="Blend (Multiplizieren)"
|
||||
MaskBlendType.BlendAddition="Blend (Addition)"
|
||||
MaskBlendType.BlendSubtraction="Blend (Subtraktion)"
|
||||
MaskBlendType.BlendAddition="Blend (Addieren)"
|
||||
MaskBlendType.BlendSubtraction="Blend (Subtrahieren)"
|
||||
Path="Pfad"
|
||||
Color="Farbe"
|
||||
Opacity="Deckkraft"
|
||||
|
|
@ -28,11 +29,11 @@ Brightness="Helligkeit"
|
|||
Gamma="Gamma"
|
||||
BrowsePath.Images="Alle Bilddateien"
|
||||
BrowsePath.AllFiles="Alle Dateien"
|
||||
KeyColorType="Key-Farbe-Typ"
|
||||
KeyColorType="Key-Farbtyp"
|
||||
KeyColor="Key-Farbe"
|
||||
Similarity="Ähnlichkeit (1-1000)"
|
||||
Smoothness="Glätte (1-1000)"
|
||||
ColorSpillReduction="Key-Farbe Spill Reduktion (1-1000)"
|
||||
Similarity="Ähnlichkeit (1 — 1000)"
|
||||
Smoothness="Glätte (1 — 1000)"
|
||||
ColorSpillReduction="Key-Farbe-Spill-Reduzierung (1 — 1000)"
|
||||
Crop.Left="Links"
|
||||
Crop.Right="Rechts"
|
||||
Crop.Top="Oben"
|
||||
|
|
@ -57,21 +58,44 @@ NoiseGate.ReleaseTime="Release-Zeit (Millisekunden)"
|
|||
Gain.GainDB="Gain (dB)"
|
||||
StretchImage="Bild strecken (Bildseitenverhältnis verwerfen)"
|
||||
Resolution="Auflösung"
|
||||
Base.Canvas="Basis-(Leinwand-)Auflösung"
|
||||
None="Keine"
|
||||
ScaleFiltering="Skalierungsfilterung"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Bereich"
|
||||
NoiseSuppress.SuppressLevel="Unterdrückungspegel (dB)"
|
||||
Saturation="Sättigung"
|
||||
HueShift="Farbtonverschiebung"
|
||||
Amount="Betrag"
|
||||
Compressor="Kompressor"
|
||||
Compressor.Ratio="Verhältnis (X:1)"
|
||||
Compressor.Threshold="Schwelle (dB)"
|
||||
Compressor.Threshold="Schwellenwert (dB)"
|
||||
Compressor.AttackTime="Angriff (ms)"
|
||||
Compressor.ReleaseTime="Freigabe (ms)"
|
||||
Compressor.ReleaseTime="Abfallzeit (ms)"
|
||||
Compressor.OutputGain="Ausgangspegel (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Quelle"
|
||||
Compressor.SidechainSource="Sidechain-/Ducking-Quelle"
|
||||
Limiter="Begrenzer"
|
||||
Limiter.Threshold="Schwellenwert (dB)"
|
||||
Limiter.ReleaseTime="Abfallzeit (ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Verhältnis (X:1)"
|
||||
Expander.Threshold="Schwellenwert (dB)"
|
||||
Expander.AttackTime="Angriff (ms)"
|
||||
Expander.ReleaseTime="Abfallzeit (ms)"
|
||||
Expander.OutputGain="Ausgangspegel (dB)"
|
||||
Expander.Detector="Erkennung"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Spitze"
|
||||
Expander.None="Keine"
|
||||
Expander.Presets="Voreinstellungen"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Gate"
|
||||
LumaKeyFilter="Luma-Key"
|
||||
Luma.LumaMax="Max. Luma"
|
||||
Luma.LumaMin="Min. Luma"
|
||||
Luma.LumaMaxSmooth="Max. Luma-Glätte"
|
||||
Luma.LumaMinSmooth="Min. Luma-Glätte"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Render Delay"
|
|||
UndistortCenter="Undistort center of image when scaling from ultrawide"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Noise Suppression"
|
||||
InvertPolarity="Invert Polarity"
|
||||
Gain="Gain"
|
||||
DelayMs="Delay (milliseconds)"
|
||||
Type="Type"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Release Time (milliseconds)"
|
|||
Gain.GainDB="Gain (dB)"
|
||||
StretchImage="Stretch Image (discard image aspect ratio)"
|
||||
Resolution="Resolution"
|
||||
Base.Canvas="Base (Canvas) Resolution"
|
||||
None="None"
|
||||
ScaleFiltering="Scale Filtering"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Area"
|
||||
NoiseSuppress.SuppressLevel="Suppression Level (dB)"
|
||||
Saturation="Saturation"
|
||||
HueShift="Hue Shift"
|
||||
|
|
@ -74,3 +77,24 @@ Compressor.AttackTime="Attack (ms)"
|
|||
Compressor.ReleaseTime="Release (ms)"
|
||||
Compressor.OutputGain="Output Gain (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Source"
|
||||
Limiter="Limiter"
|
||||
Limiter.Threshold="Threshold (dB)"
|
||||
Limiter.ReleaseTime="Release (ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Ratio (X:1)"
|
||||
Expander.Threshold="Threshold (dB)"
|
||||
Expander.AttackTime="Attack (ms)"
|
||||
Expander.ReleaseTime="Release (ms)"
|
||||
Expander.OutputGain="Output Gain (dB)"
|
||||
Expander.Detector="Detection"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Peak"
|
||||
Expander.None="None"
|
||||
Expander.Presets="Presets"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Gate"
|
||||
LumaKeyFilter="Luma Key"
|
||||
Luma.LumaMax="Luma Max"
|
||||
Luma.LumaMin="Luma Min"
|
||||
Luma.LumaMaxSmooth="Luma Max Smooth"
|
||||
Luma.LumaMinSmooth="Luma Min Smooth"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
ColorFilter="Corrección de color"
|
||||
ColorGradeFilter="Aplicar LUT"
|
||||
MaskFilter="Imagen máscara/mezcla"
|
||||
AsyncDelayFilter="Retardo de Video (asincróno)"
|
||||
AsyncDelayFilter="Retardo de Vídeo (asíncrono)"
|
||||
CropFilter="Recortar/Acolchar"
|
||||
ScrollFilter="desplazamiento"
|
||||
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"
|
||||
UndistortCenter="No distorsionar el centro de la imagen al escalar desde una ultrapanorámica"
|
||||
NoiseGate="Puerta anti-ruidos"
|
||||
NoiseSuppress="Eliminación de ruido"
|
||||
InvertPolarity="Invertir polaridad"
|
||||
Gain="Ganancia"
|
||||
DelayMs="Retardo (milisegundos)"
|
||||
Type="Tipo"
|
||||
|
|
@ -41,7 +42,7 @@ Crop.Width="Ancho"
|
|||
Crop.Height="Alto"
|
||||
Crop.Relative="Relativo"
|
||||
ScrollFilter.SpeedX="Velocidad Horizontal"
|
||||
ScrollFilter.SpeedY="VElocidad Vertical"
|
||||
ScrollFilter.SpeedY="Velocidad Vertical"
|
||||
ScrollFilter.LimitWidth="Limitar el ancho"
|
||||
ScrollFilter.LimitHeight="Limitar la altura"
|
||||
CustomColor="Color Personalizado"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Tiempo (en milisegundos) de liberacion"
|
|||
Gain.GainDB="Ganancia (dB)"
|
||||
StretchImage="Expandir imagen (descartar relación de aspecto de imagen)"
|
||||
Resolution="Resolución"
|
||||
Base.Canvas="Resolución base (Lienzo)"
|
||||
None="Ninguno"
|
||||
ScaleFiltering="Escala de filtrado"
|
||||
ScaleFiltering.Point="Punto"
|
||||
ScaleFiltering.Bilinear="Bilineal"
|
||||
ScaleFiltering.Bicubic="Bicúbico"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Área"
|
||||
NoiseSuppress.SuppressLevel="Nivel de eliminación de ruido (dB)"
|
||||
Saturation="Saturación"
|
||||
HueShift="Cambio de tonalidad"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Ataque (ms)"
|
|||
Compressor.ReleaseTime="Liberación (ms)"
|
||||
Compressor.OutputGain="Ganancia de salida (dB)"
|
||||
Compressor.SidechainSource="Fuente de atenuación/reducción"
|
||||
Limiter="Limitador"
|
||||
Limiter.Threshold="Umbral (dB)"
|
||||
Limiter.ReleaseTime="Soltar (ms)"
|
||||
Expander="Expansor"
|
||||
Expander.Ratio="Relación (X:1)"
|
||||
Expander.Threshold="Umbral (dB)"
|
||||
Expander.AttackTime="Atacar (ms)"
|
||||
Expander.ReleaseTime="Soltar (ms)"
|
||||
Expander.OutputGain="Ganancia de salida (dB)"
|
||||
Expander.Detector="Detección"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Pico"
|
||||
Expander.None="Ninguna"
|
||||
Expander.Presets="Pre-ajustes"
|
||||
Expander.Presets.Expander="Expansor"
|
||||
Expander.Presets.Gate="Puerta"
|
||||
LumaKeyFilter="Clave Luma"
|
||||
Luma.LumaMax="Máx. Luma"
|
||||
Luma.LumaMin="Min. Luma"
|
||||
Luma.LumaMaxSmooth="Suavizado Máximo Luma"
|
||||
Luma.LumaMinSmooth="Suavizado Mínimo Luma"
|
||||
|
||||
|
|
|
|||
|
|
@ -6,12 +6,13 @@ CropFilter="Moztu/Bete"
|
|||
ScrollFilter="Korritu"
|
||||
ChromaKeyFilter="Kroma"
|
||||
ColorKeyFilter="Kolore gakoa"
|
||||
SharpnessFilter="Enfokea"
|
||||
SharpnessFilter="Fokatzea"
|
||||
ScaleFilter="Eskala/Aspektu-erlazioa"
|
||||
GPUDelayFilter="Errendatzearen atzerapena"
|
||||
UndistortCenter="Ez distortsionatu irudiaren erdigunea ultra zabala eskalatzean"
|
||||
NoiseGate="Zarata atalasea"
|
||||
NoiseSuppress="Zarata kendu"
|
||||
InvertPolarity="Polaritatea alderantzikatu"
|
||||
Gain="Irabazia"
|
||||
DelayMs="Atzerapena (milisegundo)"
|
||||
Type="Mota"
|
||||
|
|
@ -49,20 +50,22 @@ Red="Gorria"
|
|||
Green="Berdea"
|
||||
Blue="Urdina"
|
||||
Magenta="Magenta"
|
||||
NoiseGate.OpenThreshold="Irekiera muga (dB)"
|
||||
NoiseGate.CloseThreshold="Itxiera muga (dB)"
|
||||
NoiseGate.OpenThreshold="Irekiera atalasea (dB)"
|
||||
NoiseGate.CloseThreshold="Itxiera atalasea (dB)"
|
||||
NoiseGate.AttackTime="Eraso denbora (milisegundo)"
|
||||
NoiseGate.HoldTime="Euste denbora (milisegundo)"
|
||||
NoiseGate.ReleaseTime="Askatze denbora (milisegundo)"
|
||||
Gain.GainDB="Irabazia (dB)"
|
||||
StretchImage="Luzatu irudia (baztertu irudiaren aspektu-erlazioa)"
|
||||
Resolution="Bereizmena"
|
||||
Base.Canvas="Oinarriaren (oihalaren) bereizmena"
|
||||
None="Ezer ez"
|
||||
ScaleFiltering="Iragazketa-eskala"
|
||||
ScaleFiltering.Point="Puntua"
|
||||
ScaleFiltering.Bilinear="Bilineala"
|
||||
ScaleFiltering.Bicubic="Bikubikoa"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Area"
|
||||
NoiseSuppress.SuppressLevel="Kenketaren maila (dB)"
|
||||
Saturation="Margoasetasuna"
|
||||
HueShift="Nabardura Aldaketa"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Erasoa (ms)"
|
|||
Compressor.ReleaseTime="Askapena (ms)"
|
||||
Compressor.OutputGain="Irteerako irabazia (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking iturburua"
|
||||
Limiter="Mugatzailea"
|
||||
Limiter.Threshold="Atalasea (dB)"
|
||||
Limiter.ReleaseTime="Askatze denbora (ms)"
|
||||
Expander="Deskonprimagailua"
|
||||
Expander.Ratio="Erlazioa (X:1)"
|
||||
Expander.Threshold="Atalasea (dB)"
|
||||
Expander.AttackTime="Erasoa (ms)"
|
||||
Expander.ReleaseTime="Askapena (ms)"
|
||||
Expander.OutputGain="Irteerako irabazia (dB)"
|
||||
Expander.Detector="Detekzioa"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Gailurra"
|
||||
Expander.None="Bat ere ez"
|
||||
Expander.Presets="Aurrez ezarritakoak"
|
||||
Expander.Presets.Expander="Deskonprimagailua"
|
||||
Expander.Presets.Gate="Atea"
|
||||
LumaKeyFilter="Luma gakoa"
|
||||
Luma.LumaMax="Luma max"
|
||||
Luma.LumaMin="Luma min"
|
||||
Luma.LumaMaxSmooth="Luma leuntasun max"
|
||||
Luma.LumaMinSmooth="Luma leuntasun min"
|
||||
|
||||
|
|
|
|||
18
plugins/obs-filters/data/locale/fa-IR.ini
Normal file
18
plugins/obs-filters/data/locale/fa-IR.ini
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
ColorFilter="اصلاح رنگ"
|
||||
ColorGradeFilter="درخواست LUT"
|
||||
MaskFilter="تصویر ماسک/مخلوط"
|
||||
ChromaKeyFilter="صحنه کلیدی(کروماکی)"
|
||||
ColorKeyFilter="رنگ کلیدی"
|
||||
SharpnessFilter="تیزکردن"
|
||||
BrowsePath.AllFiles="همهی فایل ها"
|
||||
KeyColorType="نوع رنگ کلیدی"
|
||||
Crop.Left="چپ"
|
||||
Crop.Right="راست"
|
||||
Crop.Top="بالا"
|
||||
Crop.Bottom="پایین"
|
||||
Crop.Width="عرض"
|
||||
Crop.Height="ارتفاع"
|
||||
Red="قرمز"
|
||||
Green="سبز"
|
||||
ScaleFiltering.Area="ناحیه"
|
||||
|
||||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Renderoinnin viive"
|
|||
UndistortCenter="Poista vääristymä keskeltä kuvaa skaalattaessa ultra-leveästä"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Melunvaimennus"
|
||||
InvertPolarity="Käännä Audio-napaisuus"
|
||||
Gain="Vahvistus"
|
||||
DelayMs="Viive (millisekuntia)"
|
||||
Type="Tyyppi"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Vapautumisaika (millisekuntia)"
|
|||
Gain.GainDB="Vahvistus (dB)"
|
||||
StretchImage="Venytä kuvaa (Ohita kuvasuhde)"
|
||||
Resolution="Resoluutio"
|
||||
Base.Canvas="Piirtoalueen (kanvaasin) resoluutio"
|
||||
None="Ei mitään"
|
||||
ScaleFiltering="Skaalauksen suodatus"
|
||||
ScaleFiltering.Point="Piste"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Alue"
|
||||
NoiseSuppress.SuppressLevel="Vaimennustaso (dB)"
|
||||
Saturation="Värikylläisyys"
|
||||
HueShift="Värisävy"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Attack-aika (ms)"
|
|||
Compressor.ReleaseTime="Vapautumisaika (ms)"
|
||||
Compressor.OutputGain="Signaalin vahvistus (dB)"
|
||||
Compressor.SidechainSource="Lähteen väistäminen"
|
||||
Limiter="Rajoitin"
|
||||
Limiter.Threshold="Kynnysarvo (dB)"
|
||||
Limiter.ReleaseTime="Vapautumisaika (ms)"
|
||||
Expander="Laajentaja"
|
||||
Expander.Ratio="Suhde (X:1)"
|
||||
Expander.Threshold="Kynnysarvo (dB)"
|
||||
Expander.AttackTime="Attack-aika (ms)"
|
||||
Expander.ReleaseTime="Vapautumisaika (ms)"
|
||||
Expander.OutputGain="Signaalin vahvistus (dB)"
|
||||
Expander.Detector="Havaitseminen"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Huippu"
|
||||
Expander.None="Ei mitään"
|
||||
Expander.Presets="Esiasetukset"
|
||||
Expander.Presets.Expander="Laajentaja"
|
||||
Expander.Presets.Gate="Gate"
|
||||
LumaKeyFilter="Luma-avain"
|
||||
Luma.LumaMax="Luma-maksimi"
|
||||
Luma.LumaMin="Luma-minimi"
|
||||
Luma.LumaMaxSmooth="Luma-maksimin pehmennys"
|
||||
Luma.LumaMinSmooth="Luma-minimin pehmennys"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
ColorFilter="Corrections colorimétrique"
|
||||
ColorGradeFilter="Appliquer LUT"
|
||||
ColorGradeFilter="Appliquer un LUT"
|
||||
MaskFilter="Masque d'image/mélange"
|
||||
AsyncDelayFilter="Retard vidéo (async.)"
|
||||
AsyncDelayFilter="Retard vidéo (asynchrone)"
|
||||
CropFilter="Rogner / Encadrer"
|
||||
ScrollFilter="Défilement"
|
||||
ChromaKeyFilter="Clé chromatique"
|
||||
ColorKeyFilter="Couleur d'incrustation"
|
||||
ChromaKeyFilter="Incrustation par chrominance (Chroma Key)"
|
||||
ColorKeyFilter="Incrustation par couleur"
|
||||
SharpnessFilter="Accentuer"
|
||||
ScaleFilter="Mise à l’échelle / Ratio d'affichage"
|
||||
ScaleFilter="Mise à l’échelle / Rapport d'affichage"
|
||||
GPUDelayFilter="Délai de rendu"
|
||||
UndistortCenter="Ne pas déformer le centre de l'image lors d'une mise à l'échelle ultra large"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Suppression du bruit"
|
||||
InvertPolarity="Inverser la polarité"
|
||||
Gain="Gain"
|
||||
DelayMs="Retard (en millisecondes)"
|
||||
Type="Type "
|
||||
|
|
@ -26,7 +27,7 @@ Opacity="Opacité"
|
|||
Contrast="Contraste"
|
||||
Brightness="Luminosité"
|
||||
Gamma="Gamma"
|
||||
BrowsePath.Images="Tous les fichiers images"
|
||||
BrowsePath.Images="Tous les fichiers Image"
|
||||
BrowsePath.AllFiles="Tous les fichiers"
|
||||
KeyColorType="Type de couleur-clé"
|
||||
KeyColor="Couleur-clé"
|
||||
|
|
@ -53,16 +54,18 @@ NoiseGate.OpenThreshold="Seuil d'ouverture (dB)"
|
|||
NoiseGate.CloseThreshold="Seuil de fermeture (dB)"
|
||||
NoiseGate.AttackTime="Temps d'attaque (millisecondes)"
|
||||
NoiseGate.HoldTime="Temps de maintien (millisecondes)"
|
||||
NoiseGate.ReleaseTime="Temps d'arrêt (millisecondes)"
|
||||
NoiseGate.ReleaseTime="Temps de relâche (ou \"release\" en millisecondes)"
|
||||
Gain.GainDB="Gain (dB)"
|
||||
StretchImage="Étirer l'Image (ignorer ses proportions)"
|
||||
Resolution="Résolution"
|
||||
Base.Canvas="Résolution de base (canevas)"
|
||||
None="Aucune"
|
||||
ScaleFiltering="Échelle de filtrage"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinéaire"
|
||||
ScaleFiltering.Bicubic="Bicubique"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Zone"
|
||||
NoiseSuppress.SuppressLevel="Seuil de suppression (en dB)"
|
||||
Saturation="Saturation"
|
||||
HueShift="Décalage de teinte"
|
||||
|
|
@ -71,7 +74,28 @@ Compressor="Compresseur"
|
|||
Compressor.Ratio="Ratio (X:1)"
|
||||
Compressor.Threshold="Seuil (dB)"
|
||||
Compressor.AttackTime="Attaque (ms)"
|
||||
Compressor.ReleaseTime="Libération (ms)"
|
||||
Compressor.OutputGain="Sortie Gain (dB)"
|
||||
Compressor.SidechainSource="Source Sidechain/Ducking"
|
||||
Compressor.ReleaseTime="Relâchement (ou \"release\" en ms)"
|
||||
Compressor.OutputGain="Gain en Sortie (dB)"
|
||||
Compressor.SidechainSource="Source pour la Sidechain/Ducking"
|
||||
Limiter="Limiteur"
|
||||
Limiter.Threshold="Seuil (dB)"
|
||||
Limiter.ReleaseTime="Relâchement (\"release\" en ms)"
|
||||
Expander="Expandeur"
|
||||
Expander.Ratio="Ratio (X:1)"
|
||||
Expander.Threshold="Seuil (dB)"
|
||||
Expander.AttackTime="Attaque (ms)"
|
||||
Expander.ReleaseTime="Relâchement (\"release\" en ms)"
|
||||
Expander.OutputGain="Gain en sortie (dB)"
|
||||
Expander.Detector="Détection"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Crête"
|
||||
Expander.None="Aucune"
|
||||
Expander.Presets="Pré-réglages"
|
||||
Expander.Presets.Expander="Expandeur"
|
||||
Expander.Presets.Gate="Gate"
|
||||
LumaKeyFilter="Incrustation par luminance (Luma Key)"
|
||||
Luma.LumaMax="Luminance max."
|
||||
Luma.LumaMin="Luminance min."
|
||||
Luma.LumaMaxSmooth="Adoucissement luminance max."
|
||||
Luma.LumaMinSmooth="Adoucissement luminance min."
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ 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"
|
||||
InvertPolarity="Polaritás megfordítása"
|
||||
Gain="Erősítés"
|
||||
DelayMs="Késleltetés (ezredmásodperc)"
|
||||
Type="Típus"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Felengedés ideje (ezredmásodperc)"
|
|||
Gain.GainDB="Erősítés (dB)"
|
||||
StretchImage="Kép nyújtása (képarány elvetésével)"
|
||||
Resolution="Felbontás"
|
||||
Base.Canvas="Alap (Vászon) felbontás"
|
||||
None="Nincs"
|
||||
ScaleFiltering="Skála-szűrés"
|
||||
ScaleFiltering.Point="Pont"
|
||||
ScaleFiltering.Bilinear="Bilineáris"
|
||||
ScaleFiltering.Bicubic="Kettős köbös"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Terület"
|
||||
NoiseSuppress.SuppressLevel="Csökkentési szint (dB)"
|
||||
Saturation="Telítettség"
|
||||
HueShift="Színezet váltása"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Aktiválás (ms)"
|
|||
Compressor.ReleaseTime="Felengedés (ms)"
|
||||
Compressor.OutputGain="Kimeneti erősítés (dB)"
|
||||
Compressor.SidechainSource="Oldallánc/Buktatott forrás"
|
||||
Limiter="Limiter"
|
||||
Limiter.Threshold="Küszöb (dB)"
|
||||
Limiter.ReleaseTime="Kiadás (ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Arány (X:1)"
|
||||
Expander.Threshold="Küszöb (dB)"
|
||||
Expander.AttackTime="Aktiválás (ms)"
|
||||
Expander.ReleaseTime="Felengedés (ms)"
|
||||
Expander.OutputGain="Kimeneti erősítés (dB)"
|
||||
Expander.Detector="Észlelés"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Csúcs"
|
||||
Expander.None="Nincs"
|
||||
Expander.Presets="Készletek"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Kapu"
|
||||
LumaKeyFilter="Luma kulcs"
|
||||
Luma.LumaMax="Luma maximum"
|
||||
Luma.LumaMin="Luma minimum"
|
||||
Luma.LumaMaxSmooth="Luma maximum simított"
|
||||
Luma.LumaMinSmooth="Luma minimum simított"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,77 +1,101 @@
|
|||
ColorFilter="Correzione colore"
|
||||
ColorFilter="Correzione del colore"
|
||||
ColorGradeFilter="Applica LUT"
|
||||
MaskFilter="Immagine maschera/miscela"
|
||||
MaskFilter="Maschera/miscela l'immagine"
|
||||
AsyncDelayFilter="Ritardo video (Asincrono)"
|
||||
CropFilter="Crop/Pad"
|
||||
CropFilter="Ritaglia/aggiungi una cornice"
|
||||
ScrollFilter="Scorrimento"
|
||||
ChromaKeyFilter="Chroma Key"
|
||||
ColorKeyFilter="Chiave Colore"
|
||||
ChromaKeyFilter="Chiave chroma"
|
||||
ColorKeyFilter="Chiave colore"
|
||||
SharpnessFilter="Nitidizza"
|
||||
ScaleFilter="Ridimensionamento/Aspect Ratio"
|
||||
GPUDelayFilter="Ritardo di rendering"
|
||||
UndistortCenter="Rimuovi distorsione del centro immagine quando si scala da un rapporto molto alto"
|
||||
ScaleFilter="Ridimensionamento/proporzioni"
|
||||
GPUDelayFilter="Ritardo del rendering"
|
||||
UndistortCenter="Rimuovi la distorsione del centro immagine quando si scala da un rapporto dello schermo ultrawide"
|
||||
NoiseGate="Sensibilità dell'ingresso"
|
||||
NoiseSuppress="Soppressione rumore"
|
||||
Gain="Incremento"
|
||||
DelayMs="Ritardo (millisecondi)"
|
||||
NoiseSuppress="Riduzione del rumore"
|
||||
InvertPolarity="Inverti la polarità"
|
||||
Gain="Guadagno"
|
||||
DelayMs="Ritardo (in millisecondi)"
|
||||
Type="Tipo"
|
||||
MaskBlendType.MaskColor="Maschera alfa (canale di colore)"
|
||||
MaskBlendType.MaskAlpha="Maschera alfa (Canale alpha)"
|
||||
MaskBlendType.MaskAlpha="Maschera alfa (canale alfa)"
|
||||
MaskBlendType.BlendMultiply="Miscela (moltiplica)"
|
||||
MaskBlendType.BlendAddition="Miscela (aggiunta)"
|
||||
MaskBlendType.BlendSubtraction="Miscela (sottrazione)"
|
||||
MaskBlendType.BlendAddition="Miscela (additiva)"
|
||||
MaskBlendType.BlendSubtraction="Miscela (sottrattiva)"
|
||||
Path="Percorso"
|
||||
Color="Colore"
|
||||
Opacity="Opacità"
|
||||
Contrast="Contrasto"
|
||||
Brightness="Luminosità"
|
||||
Gamma="Gamma"
|
||||
BrowsePath.Images="Tutti i file di immagine"
|
||||
BrowsePath.Images="Tutti i file immagine"
|
||||
BrowsePath.AllFiles="Tutti i file"
|
||||
KeyColorType="Tipo di Color Key"
|
||||
KeyColor="Key Color"
|
||||
KeyColorType="Tipo di chiave colore"
|
||||
KeyColor="Chiave colore"
|
||||
Similarity="Somiglianza (1-1000)"
|
||||
Smoothness="Scorrevolezza (1-1000)"
|
||||
ColorSpillReduction="Key Color Spill Reduction (1-1000)"
|
||||
Smoothness="Finezza (1-1000)"
|
||||
ColorSpillReduction="Riduzione della sbavatura della chiave colore (1-1000)"
|
||||
Crop.Left="A sinistra"
|
||||
Crop.Right="A destra"
|
||||
Crop.Top="In alto"
|
||||
Crop.Bottom="In Basso"
|
||||
Crop.Bottom="In basso"
|
||||
Crop.Width="Larghezza"
|
||||
Crop.Height="Altezza"
|
||||
Crop.Relative="Relativo"
|
||||
ScrollFilter.SpeedX="Velocità orizzontale"
|
||||
ScrollFilter.SpeedY="Velocità verticale"
|
||||
ScrollFilter.LimitWidth="Limite larghezza"
|
||||
ScrollFilter.LimitHeight="Limite altezza"
|
||||
CustomColor="Personalizza colore"
|
||||
ScrollFilter.LimitWidth="Limite della larghezza"
|
||||
ScrollFilter.LimitHeight="Limite dell'altezza"
|
||||
CustomColor="Colore personalizzato"
|
||||
Red="Rosso"
|
||||
Green="Verde"
|
||||
Blue="Blu"
|
||||
Magenta="Magenta"
|
||||
NoiseGate.OpenThreshold="Apri soglia (dB)"
|
||||
NoiseGate.CloseThreshold="Chiudo soglia (dB)"
|
||||
NoiseGate.AttackTime="Tempo d'inizio (millisecondi)"
|
||||
NoiseGate.HoldTime="Tempo d'attesa (millisecondi)"
|
||||
NoiseGate.ReleaseTime="Tempo di rilascio (millisecondi)"
|
||||
Gain.GainDB="Incremento (dB)"
|
||||
StretchImage="Stendi immagine (scarta proporzioni immagine)"
|
||||
NoiseGate.OpenThreshold="Soglia di apertura (in dB)"
|
||||
NoiseGate.CloseThreshold="Soglia di chiusura (in dB)"
|
||||
NoiseGate.AttackTime="Tempo di attivazione (in millisecondi)"
|
||||
NoiseGate.HoldTime="Tempo di attesa (in millisecondi)"
|
||||
NoiseGate.ReleaseTime="Tempo di rilascio (in millisecondi)"
|
||||
Gain.GainDB="Guadagno (in dB)"
|
||||
StretchImage="Adatta l'immagine allo schermo (ignorando le proporzioni)"
|
||||
Resolution="Risoluzione"
|
||||
None="Nessuno"
|
||||
Base.Canvas="Risoluzione di base (inquadratura)"
|
||||
None="Nessuna"
|
||||
ScaleFiltering="Scala di filtraggio"
|
||||
ScaleFiltering.Point="Punto"
|
||||
ScaleFiltering.Bilinear="Bilineare"
|
||||
ScaleFiltering.Bicubic="Bicubico"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
NoiseSuppress.SuppressLevel="Livello di soppressione (dB)"
|
||||
ScaleFiltering.Area="Zona"
|
||||
NoiseSuppress.SuppressLevel="Livello di riduzione (in 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)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Sorgente"
|
||||
Compressor.Ratio="Rapporto/proporzioni (X:1)"
|
||||
Compressor.Threshold="Soglia (in dB)"
|
||||
Compressor.AttackTime="Attivazione (in ms)"
|
||||
Compressor.ReleaseTime="Rilascio (in ms)"
|
||||
Compressor.OutputGain="Guadagno in uscita (in dB)"
|
||||
Compressor.SidechainSource="Fonte per sidechain/ducking"
|
||||
Limiter="Limitatore"
|
||||
Limiter.Threshold="Soglia (in dB)"
|
||||
Limiter.ReleaseTime="Rilascio (in ms)"
|
||||
Expander="Espansore"
|
||||
Expander.Ratio="Rapporto/proporzioni (X:1)"
|
||||
Expander.Threshold="Soglia (in dB)"
|
||||
Expander.AttackTime="Attivazione (in ms)"
|
||||
Expander.ReleaseTime="Rilascio (in ms)"
|
||||
Expander.OutputGain="Guadagno in uscita (in dB)"
|
||||
Expander.Detector="Tipo di rilevamento"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Picco"
|
||||
Expander.None="Nessuno"
|
||||
Expander.Presets="Preset"
|
||||
Expander.Presets.Expander="Espansore"
|
||||
Expander.Presets.Gate="Sensibilità"
|
||||
LumaKeyFilter="Chiave Luma"
|
||||
Luma.LumaMax="Luma massima"
|
||||
Luma.LumaMin="Luma minima"
|
||||
Luma.LumaMaxSmooth="Sfumatura massima di Luma"
|
||||
Luma.LumaMinSmooth="Sfumatura minima di Luma"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="レンダリング遅延"
|
|||
UndistortCenter="超広角からスケーリングするときに画像の中心を歪めない"
|
||||
NoiseGate="ノイズゲート"
|
||||
NoiseSuppress="ノイズ抑制"
|
||||
InvertPolarity="極性を反転する"
|
||||
Gain="ゲイン"
|
||||
DelayMs="遅延時間 (ミリ秒)"
|
||||
Type="種別"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="解除時間 (ミリ秒)"
|
|||
Gain.GainDB="ゲイン (dB)"
|
||||
StretchImage="画像を拡大 (アスペクト比を破棄)"
|
||||
Resolution="解像度"
|
||||
Base.Canvas="基本 (キャンバス) 解像度"
|
||||
None="なし"
|
||||
ScaleFiltering="スケールフィルタ"
|
||||
ScaleFiltering.Point="ポイント"
|
||||
ScaleFiltering.Bilinear="バイリニア"
|
||||
ScaleFiltering.Bicubic="バイキュービック"
|
||||
ScaleFiltering.Lanczos="ランチョス"
|
||||
ScaleFiltering.Area="エリア"
|
||||
NoiseSuppress.SuppressLevel="抑制レベル (dB)"
|
||||
Saturation="彩度"
|
||||
HueShift="色相シフト"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="アタックタイム (ms)"
|
|||
Compressor.ReleaseTime="リリースタイム (ms)"
|
||||
Compressor.OutputGain="出力ゲイン (dB)"
|
||||
Compressor.SidechainSource="サイドチェーン/ダッキングソース"
|
||||
Limiter="リミッター"
|
||||
Limiter.Threshold="閾値 (dB)"
|
||||
Limiter.ReleaseTime="リリースタイム (ms)"
|
||||
Expander="エキスパンダー"
|
||||
Expander.Ratio="比率 (X:1)"
|
||||
Expander.Threshold="閾値 (dB)"
|
||||
Expander.AttackTime="アタックタイム (ms)"
|
||||
Expander.ReleaseTime="リリースタイム (ms)"
|
||||
Expander.OutputGain="出力ゲイン (dB)"
|
||||
Expander.Detector="検出"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="ピーク"
|
||||
Expander.None="未設定"
|
||||
Expander.Presets="プリセット"
|
||||
Expander.Presets.Expander="エキスパンダー"
|
||||
Expander.Presets.Gate="ゲート"
|
||||
LumaKeyFilter="ルマキー"
|
||||
Luma.LumaMax="最大輝度"
|
||||
Luma.LumaMin="最小輝度"
|
||||
Luma.LumaMaxSmooth="ルマ最大スムーズ"
|
||||
Luma.LumaMinSmooth="ルマ最小スムーズ"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="დაყოვნება დამუშავებისა
|
|||
UndistortCenter="ზეფართო სურათის შუაგულის გამრუდების არიდება, ზომების შეცვლისას"
|
||||
NoiseGate="ხმაურის შეზღუდვა"
|
||||
NoiseSuppress="ხმაურის დახშობა"
|
||||
InvertPolarity="შებრუნებული პოლარობა"
|
||||
Gain="სიგნალის გაძლიერება"
|
||||
DelayMs="დაყოვნება (მილიწამი)"
|
||||
Type="სახეობა"
|
||||
|
|
@ -32,7 +33,7 @@ KeyColorType="საკვანძო ფერის სახე"
|
|||
KeyColor="საკვანძო ფერი"
|
||||
Similarity="მსგავსება (1-1000)"
|
||||
Smoothness="სიგლუვე (1-1000)"
|
||||
ColorSpillReduction="საკვანძო ფერთა გაბნევის შემცირება (1-1000)"
|
||||
ColorSpillReduction="საკვანძო ფერის გაბნევის შემცირება (1-1000)"
|
||||
Crop.Left="მარცხენა"
|
||||
Crop.Right="მარჯვენა"
|
||||
Crop.Top="ზედა"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="შემცირების (Release) ხანგრ
|
|||
Gain.GainDB="გაძლიერება (dB)"
|
||||
StretchImage="სურათის გაწელვა (გვერდების თანაფარდობის უგულებელყოფა)"
|
||||
Resolution="გაფართოება"
|
||||
Base.Canvas="ძირითადი (ფონის) გაფართოება"
|
||||
None="არცერთი"
|
||||
ScaleFiltering="მასშტაბირების ფილტრი"
|
||||
ScaleFiltering.Point="წერტილოვანი"
|
||||
ScaleFiltering.Bilinear="ორხაზოვანი"
|
||||
ScaleFiltering.Bicubic="ბიკუბური"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="სივრცე"
|
||||
NoiseSuppress.SuppressLevel="დახშობის ხარისხი (dB)"
|
||||
Saturation="გაჯერებულობა"
|
||||
HueShift="შეფერილობის შეცვლა"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="მომატება (მწ)"
|
|||
Compressor.ReleaseTime="შემცირება (მწ)"
|
||||
Compressor.OutputGain="გამომავალი სიგნალის გაძლიერება (dB)"
|
||||
Compressor.SidechainSource="Sidechain/ხმის დონის დადაბლების წყარო"
|
||||
Limiter="შემზღუდველი"
|
||||
Limiter.Threshold="ზღურბლი (dB)"
|
||||
Limiter.ReleaseTime="შემცირება (მწ)"
|
||||
Expander="გამშლელი"
|
||||
Expander.Ratio="ფარდობა (X:1)"
|
||||
Expander.Threshold="ზღურბლი (dB)"
|
||||
Expander.AttackTime="მომატება (მწ)"
|
||||
Expander.ReleaseTime="შემცირება (მწ)"
|
||||
Expander.OutputGain="გამომავალი სიგნალის გაძლიერება (dB)"
|
||||
Expander.Detector="დადგენა"
|
||||
Expander.RMS="საშ. კვადრატული (RMS)"
|
||||
Expander.Peak="ხანმოკლე"
|
||||
Expander.None="არცერთი"
|
||||
Expander.Presets="მზა პარამეტრები"
|
||||
Expander.Presets.Expander="გამშლელი"
|
||||
Expander.Presets.Gate="ჩამკეტი"
|
||||
LumaKeyFilter="კაშკაშა არეების ჩანაცვლება (Luma Key)"
|
||||
Luma.LumaMax="სიკაშკაშის ზედა ზღვარი"
|
||||
Luma.LumaMin="სიკაშკაშის ქვედა ზღვარი"
|
||||
Luma.LumaMaxSmooth="სიკაშკაშის ზედა ზღვრის სიგლუვე"
|
||||
Luma.LumaMinSmooth="სიკაშკაშის ქვედა ზღვრის სიგლუვე"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="렌더링 지연"
|
|||
UndistortCenter="울트라와이드에서 크기조정 시 이미지 중앙의 왜곡을 수정"
|
||||
NoiseGate="노이즈 게이트"
|
||||
NoiseSuppress="소음 억제"
|
||||
InvertPolarity="극성 반전"
|
||||
Gain="증폭"
|
||||
DelayMs="지연 (밀리초)"
|
||||
Type="형식"
|
||||
|
|
@ -53,16 +54,18 @@ NoiseGate.OpenThreshold="개방 역치값 (dB)"
|
|||
NoiseGate.CloseThreshold="폐쇄 역치값 (dB)"
|
||||
NoiseGate.AttackTime="개방 준비 시간 (밀리세컨드)"
|
||||
NoiseGate.HoldTime="개방 유지 시간 (밀리세컨드)"
|
||||
NoiseGate.ReleaseTime="폐쇄 준비 시간 (밀리세컨드)"
|
||||
NoiseGate.ReleaseTime="폐쇄 준비 시간 (밀리세컨드)"
|
||||
Gain.GainDB="증폭 (dB)"
|
||||
StretchImage="이미지 늘리기 (이미지 가로 세로 비율 포기)"
|
||||
Resolution="해상도"
|
||||
Base.Canvas="기본 (캔버스) 해상도"
|
||||
None="없음"
|
||||
ScaleFiltering="비율 필터링"
|
||||
ScaleFiltering.Point="점"
|
||||
ScaleFiltering.Bilinear="이중선형"
|
||||
ScaleFiltering.Bicubic="쌍삼차"
|
||||
ScaleFiltering.Lanczos="란초스"
|
||||
ScaleFiltering.Area="영역"
|
||||
NoiseSuppress.SuppressLevel="억제 세기 (dB)"
|
||||
Saturation="채도"
|
||||
HueShift="색조 변화"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="신호 감지 후 반응까지 걸리는 시간 (ms)"
|
|||
Compressor.ReleaseTime="신호 세기가 감퇴 이후 증폭이 회복하는 시간 (ms)"
|
||||
Compressor.OutputGain="출력 증폭 (dB)"
|
||||
Compressor.SidechainSource="사이드체인/더킹 소스"
|
||||
Limiter="음성 제한"
|
||||
Limiter.Threshold="임계값 (dB)"
|
||||
Limiter.ReleaseTime="해제 (ms)"
|
||||
Expander="확장기"
|
||||
Expander.Ratio="비율 (X:1)"
|
||||
Expander.Threshold="임계값 (dB)"
|
||||
Expander.AttackTime="반응 시간 (ms)"
|
||||
Expander.ReleaseTime="해제 (ms)"
|
||||
Expander.OutputGain="출력 증폭 (dB)"
|
||||
Expander.Detector="측정 감지"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="최고조"
|
||||
Expander.None="없음"
|
||||
Expander.Presets="사전 설정"
|
||||
Expander.Presets.Expander="확장기"
|
||||
Expander.Presets.Gate="게이트"
|
||||
LumaKeyFilter="루마 키"
|
||||
Luma.LumaMax="루마 최대값"
|
||||
Luma.LumaMin="루마 최소값"
|
||||
Luma.LumaMaxSmooth="루마 스무스 최대값"
|
||||
Luma.LumaMinSmooth="루마 스무스 최소값"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Rendringsforsinkelse"
|
|||
UndistortCenter="Fjern forstyrring av bildets midtområde, når det skaleres ned fra ultrabredhet"
|
||||
NoiseGate="Støyterskel"
|
||||
NoiseSuppress="Lyddemping"
|
||||
InvertPolarity="Inverter polaritet"
|
||||
Gain="Forsterkning"
|
||||
DelayMs="Forsinkelse (millisekunder)"
|
||||
Type="Type"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Løslatelsestid (millisekunder)"
|
|||
Gain.GainDB="Forsterkning (dB)"
|
||||
StretchImage="Strekk bilde (ignorer bildets sideforhold)"
|
||||
Resolution="Oppløsning"
|
||||
Base.Canvas="Grunnoppløsning (lerret)"
|
||||
None="Ingen"
|
||||
ScaleFiltering="Skala Filtrering"
|
||||
ScaleFiltering.Point="Punkt"
|
||||
ScaleFiltering.Bilinear="Bilineær"
|
||||
ScaleFiltering.Bicubic="Bikubisk"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Område"
|
||||
NoiseSuppress.SuppressLevel="Dempelse Nivå (dB)"
|
||||
Saturation="Metning"
|
||||
HueShift="Fargetone Skifte"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Angrep (ms)"
|
|||
Compressor.ReleaseTime="Slipp (ms)"
|
||||
Compressor.OutputGain="Utdataforsterkning (dB)"
|
||||
Compressor.SidechainSource="Lydduppe-kilde"
|
||||
Limiter="Begrenser"
|
||||
Limiter.Threshold="Terskel (dB)"
|
||||
Limiter.ReleaseTime="Slipp (ms)"
|
||||
Expander="Utvider"
|
||||
Expander.Ratio="Forhold (X:1)"
|
||||
Expander.Threshold="Terskel (dB)"
|
||||
Expander.AttackTime="Responstid (ms)"
|
||||
Expander.ReleaseTime="Slipp (ms)"
|
||||
Expander.OutputGain="Utdataforsterkning (dB)"
|
||||
Expander.Detector="Identifisering"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Topp"
|
||||
Expander.None="Ingen"
|
||||
Expander.Presets="Forhåndsinnstillinger"
|
||||
Expander.Presets.Expander="Utvider"
|
||||
Expander.Presets.Gate="Port"
|
||||
LumaKeyFilter="Luma Key"
|
||||
Luma.LumaMax="Luma maks."
|
||||
Luma.LumaMin="Luma min."
|
||||
Luma.LumaMaxSmooth="Luma maks. glidende"
|
||||
Luma.LumaMinSmooth="Luma min. glidende"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Rendervertraging"
|
|||
UndistortCenter="Verbeter beeldverhouding in het midden van bij schalen vanaf ultrawide"
|
||||
NoiseGate="Noise Gate"
|
||||
NoiseSuppress="Ruisonderdrukking"
|
||||
InvertPolarity="Polariteit omkeren"
|
||||
Gain="Gain"
|
||||
DelayMs="Vertraging (milliseconden)"
|
||||
Type="Type"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Release-tijd (milliseconden)"
|
|||
Gain.GainDB="Gain (dB)"
|
||||
StretchImage="Afbeelding uitrekken (negeer beeldverhouding van de afbeelding)"
|
||||
Resolution="Resolutie"
|
||||
Base.Canvas="Basisresolutie (Canvas)"
|
||||
None="Geen"
|
||||
ScaleFiltering="Schaal-filter"
|
||||
ScaleFiltering.Point="Point"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Gebied"
|
||||
NoiseSuppress.SuppressLevel="Onderdrukkingsniveau (dB)"
|
||||
Saturation="Verzadiging"
|
||||
HueShift="Tintverschuiving"
|
||||
|
|
@ -74,4 +77,20 @@ Compressor.AttackTime="Attack (ms)"
|
|||
Compressor.ReleaseTime="Release (ms)"
|
||||
Compressor.OutputGain="Uitvoergain (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Bron"
|
||||
Limiter="Begrenzer"
|
||||
Limiter.Threshold="Drempel (dB)"
|
||||
Limiter.ReleaseTime="Vrijgave (ms)"
|
||||
Expander="Uitbreiding"
|
||||
Expander.Ratio="Verhouding (X:1)"
|
||||
Expander.Threshold="Drempel (dB)"
|
||||
Expander.AttackTime="Aanval (ms)"
|
||||
Expander.ReleaseTime="Vrijgave (ms)"
|
||||
Expander.OutputGain="Uitvoer versterking (dB)"
|
||||
Expander.Detector="Detectie"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Piek"
|
||||
Expander.None="Geen"
|
||||
Expander.Presets="Vooraf ingestelde instellingen"
|
||||
Expander.Presets.Expander="Uitbreiding"
|
||||
Expander.Presets.Gate="Hek"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ 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"
|
||||
InvertPolarity="Odwrócenie polaryzacji"
|
||||
Gain="Poziom"
|
||||
DelayMs="Opóźnienie (milisekundy)"
|
||||
Type="Typ"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Czas zwolnienia (milisekundy)"
|
|||
Gain.GainDB="Poziom (dB)"
|
||||
StretchImage="Rozciągnięcie obrazu (ignoruj proporcje)"
|
||||
Resolution="Rozdzielczość"
|
||||
Base.Canvas="Rozdzielczość bazowa (obraz)"
|
||||
None="Brak"
|
||||
ScaleFiltering="Filtrowanie"
|
||||
ScaleFiltering.Point="Punktowe"
|
||||
ScaleFiltering.Bilinear="Dwuliniowe"
|
||||
ScaleFiltering.Bicubic="Dwusześcienne"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Obszar"
|
||||
NoiseSuppress.SuppressLevel="Poziom tłumienia (dB)"
|
||||
Saturation="Nasycenie"
|
||||
HueShift="Przesunięcie barwy"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Atak (ms)"
|
|||
Compressor.ReleaseTime="Odpuszczenie (ms)"
|
||||
Compressor.OutputGain="Zysk na wyjściu (dB)"
|
||||
Compressor.SidechainSource="Źródło poboczne"
|
||||
Limiter="Limiter"
|
||||
Limiter.Threshold="Próg odcięcia (dB)"
|
||||
Limiter.ReleaseTime="Czas reakcji (ms)"
|
||||
Expander="Expander"
|
||||
Expander.Ratio="Stosunek (X:1)"
|
||||
Expander.Threshold="Próg (dB)"
|
||||
Expander.AttackTime="Aktywacja (ms)"
|
||||
Expander.ReleaseTime="Odpuszczenie (ms)"
|
||||
Expander.OutputGain="Zysk na wyjściu (dB)"
|
||||
Expander.Detector="Wykrywanie"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Punkt szczytowy"
|
||||
Expander.None="Brak"
|
||||
Expander.Presets="Predefiniowane"
|
||||
Expander.Presets.Expander="Expander"
|
||||
Expander.Presets.Gate="Brama"
|
||||
LumaKeyFilter="Kluczowanie luma key"
|
||||
Luma.LumaMax="Luma Max"
|
||||
Luma.LumaMin="Luma Min"
|
||||
Luma.LumaMaxSmooth="Luma wygładzanie max"
|
||||
Luma.LumaMinSmooth="Luma wygładzanie min"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ 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"
|
||||
InvertPolarity="Inverter Polaridade"
|
||||
Gain="Ganho"
|
||||
DelayMs="Atraso (milissegundos)"
|
||||
Type="Tipo"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Tempo de liberação (milissegundos)"
|
|||
Gain.GainDB="Ganho (dB)"
|
||||
StretchImage="Esticar a Imagem (descartar aspecto da imagem)"
|
||||
Resolution="Resolução"
|
||||
Base.Canvas="Resolução Base (Tela)"
|
||||
None="Nenhum"
|
||||
ScaleFiltering="Filtragem de escala"
|
||||
ScaleFiltering.Point="Ponto"
|
||||
ScaleFiltering.Bilinear="Bilinear"
|
||||
ScaleFiltering.Bicubic="Bicúbico"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Área"
|
||||
NoiseSuppress.SuppressLevel="Nível de redução (dB)"
|
||||
Saturation="Saturação"
|
||||
HueShift="Alteração de matiz"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Ataque (ms)"
|
|||
Compressor.ReleaseTime="Liberação (ms)"
|
||||
Compressor.OutputGain="Ganho na saída (dB)"
|
||||
Compressor.SidechainSource="Fonte de Cadeia Lateral/Oscilação de Áudio"
|
||||
Limiter="Limitador"
|
||||
Limiter.Threshold="Limiar (dB)"
|
||||
Limiter.ReleaseTime="Liberação (ms)"
|
||||
Expander="Expansor"
|
||||
Expander.Ratio="Razão (X:1)"
|
||||
Expander.Threshold="Limiar (dB)"
|
||||
Expander.AttackTime="Ataque (ms)"
|
||||
Expander.ReleaseTime="Liberação (ms)"
|
||||
Expander.OutputGain="Ganho na Saída (dB)"
|
||||
Expander.Detector="Detecção"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Pico"
|
||||
Expander.None="Nenhuma"
|
||||
Expander.Presets="Predefinições"
|
||||
Expander.Presets.Expander="Expansor"
|
||||
Expander.Presets.Gate="Portão"
|
||||
LumaKeyFilter="Luma Key"
|
||||
Luma.LumaMax="Luminância Máxima"
|
||||
Luma.LumaMin="Luminância Mínima"
|
||||
Luma.LumaMaxSmooth="Suavização da Luminância Máxima"
|
||||
Luma.LumaMinSmooth="Suavização da Luminância Mínima"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
ColorFilter="Correção de cor"
|
||||
ColorGradeFilter="Aplicar LUT"
|
||||
MaskFilter="Máscara/mistura de imagem"
|
||||
AsyncDelayFilter="Atraso de vídeo (Async)"
|
||||
ScrollFilter="Percorre"
|
||||
|
|
@ -6,6 +7,7 @@ ChromaKeyFilter="Chroma Key"
|
|||
ColorKeyFilter="Color Key"
|
||||
SharpnessFilter="Nitidez"
|
||||
NoiseGate="Filtro de ruído"
|
||||
InvertPolarity="Inverter Polaridade"
|
||||
Gain="Ganho"
|
||||
DelayMs="Atraso (milissegundos)"
|
||||
Type="Topo"
|
||||
|
|
@ -50,4 +52,32 @@ NoiseGate.HoldTime="Tempo de bloqueio (milissegundos)"
|
|||
NoiseGate.ReleaseTime="Tempo de libertação (milissegundos)"
|
||||
Gain.GainDB="Ganho (dB)"
|
||||
StretchImage="Esticar a imagem (relação de aspeto de imagem de descarte)"
|
||||
Resolution="Resolução"
|
||||
None="Nenhum"
|
||||
NoiseSuppress.SuppressLevel="Nível de Supressão (dB)"
|
||||
Saturation="Saturação"
|
||||
Amount="Montante"
|
||||
Compressor="Compressor"
|
||||
Compressor.Ratio="Relação (X:1)"
|
||||
Compressor.Threshold="Limiar (dB)"
|
||||
Compressor.AttackTime="Ataque (ms)"
|
||||
Compressor.ReleaseTime="Liberação (ms)"
|
||||
Compressor.OutputGain="Ganho de saída (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Source"
|
||||
Limiter="Limitador"
|
||||
Limiter.Threshold="Limiar (dB)"
|
||||
Limiter.ReleaseTime="Release (ms)"
|
||||
Expander="Expansor"
|
||||
Expander.Ratio="Relação (X:1)"
|
||||
Expander.Threshold="Limiar (dB)"
|
||||
Expander.AttackTime="Ataque (ms)"
|
||||
Expander.ReleaseTime="Liberação (ms)"
|
||||
Expander.OutputGain="Ganho de saída (dB)"
|
||||
Expander.Detector="Deteção"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Pico"
|
||||
Expander.None="Nenhum"
|
||||
Expander.Presets="Predefinições"
|
||||
Expander.Presets.Expander="Expansor"
|
||||
Expander.Presets.Gate="Portão"
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ ColorKeyFilter="Culoare cheie"
|
|||
SharpnessFilter="Accentuare"
|
||||
ScaleFilter="Scalare/Rație Aspect"
|
||||
NoiseGate="Poartă de zgomot"
|
||||
InvertPolarity="Inversează polaritatea"
|
||||
Gain="Amplificare"
|
||||
DelayMs="Întârziere (milisecunde)"
|
||||
Type="Tip"
|
||||
|
|
@ -26,7 +27,7 @@ BrowsePath.AllFiles="Toate fișierele"
|
|||
KeyColorType="Tipul culorii cheie"
|
||||
KeyColor="Culoare cheie"
|
||||
Similarity="Similaritate (1-100)"
|
||||
Smoothness="Netezire (1-1000)"
|
||||
Smoothness="Netezime (1-1000)"
|
||||
ColorSpillReduction="Reducere pentru devărsarea culorii cheie (1-1000)"
|
||||
Crop.Left="Stânga"
|
||||
Crop.Right="Dreapta"
|
||||
|
|
@ -52,9 +53,28 @@ NoiseGate.ReleaseTime="Timp de eliberare (milisecunde)"
|
|||
Gain.GainDB="Amplificare (dB)"
|
||||
StretchImage="Întinde imaginea (renunță la raportul de aspect al imaginii)"
|
||||
Resolution="Rezoluție"
|
||||
Base.Canvas="Rezoluție (planșă) de bază"
|
||||
None="Fără"
|
||||
ScaleFiltering.Bilinear="Biliniar"
|
||||
ScaleFiltering.Bicubic="Bicubic"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
Saturation="Saturație"
|
||||
Compressor="Compresor"
|
||||
Compressor.Ratio="Raport (X:1)"
|
||||
Compressor.Threshold="Prag (dB)"
|
||||
Compressor.AttackTime="Atacare (ms)"
|
||||
Compressor.ReleaseTime="Eliberare (ms)"
|
||||
Compressor.OutputGain="Amplificare pentru ieșire (dB)"
|
||||
Limiter="Limitor"
|
||||
Limiter.Threshold="Prag (dB)"
|
||||
Limiter.ReleaseTime="Eliberare (ms)"
|
||||
Expander.Ratio="Raport (X:1)"
|
||||
Expander.Threshold="Prag (dB)"
|
||||
Expander.OutputGain="Amplificare pentru ieșire (dB)"
|
||||
Expander.Detector="Detectare"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Valoare de vârf"
|
||||
Expander.None="Niciuna"
|
||||
Expander.Presets="Presetări"
|
||||
Expander.Presets.Expander="Expandor"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Задержка отображения"
|
|||
UndistortCenter="Не искривлять центр изображения при масштабировании Ultrawide разрешения"
|
||||
NoiseGate="Пропускной уровень шума"
|
||||
NoiseSuppress="Шумоподавление"
|
||||
InvertPolarity="Инвертировать полярность"
|
||||
Gain="Усиление"
|
||||
DelayMs="Задержка (миллисекунд)"
|
||||
Type="Тип"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Длительность затухания (миллис
|
|||
Gain.GainDB="Усиление (дБ)"
|
||||
StretchImage="Растянуть изображение (игнорировать пропорции изображения)"
|
||||
Resolution="Разрешение"
|
||||
Base.Canvas="Базовое (основное) разрешение"
|
||||
None="Нет"
|
||||
ScaleFiltering="Фильтр масштабирования"
|
||||
ScaleFiltering.Point="Точечный"
|
||||
ScaleFiltering.Bilinear="Билинейный"
|
||||
ScaleFiltering.Bicubic="Бикубический"
|
||||
ScaleFiltering.Lanczos="Метод Ланцоша"
|
||||
ScaleFiltering.Area="Область"
|
||||
NoiseSuppress.SuppressLevel="Уровень подавления (дБ)"
|
||||
Saturation="Насыщенность"
|
||||
HueShift="Сдвиг оттенка"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Атака (мс)"
|
|||
Compressor.ReleaseTime="Спад (мс)"
|
||||
Compressor.OutputGain="Выходное усиление (дБ)"
|
||||
Compressor.SidechainSource="Источник приглушения/сайдчейн-компрессии"
|
||||
Limiter="Лимитер"
|
||||
Limiter.Threshold="Порог срабатывания (дБ)"
|
||||
Limiter.ReleaseTime="Восстановление (мс)"
|
||||
Expander="Экспандер"
|
||||
Expander.Ratio="Соотношение (X:1)"
|
||||
Expander.Threshold="Порог срабатывания (дБ)"
|
||||
Expander.AttackTime="Атака (мс)"
|
||||
Expander.ReleaseTime="Восстановление (мс)"
|
||||
Expander.OutputGain="Выходное усиление (дБ)"
|
||||
Expander.Detector="Обнаружение"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Пик"
|
||||
Expander.None="Нет"
|
||||
Expander.Presets="Предустановки"
|
||||
Expander.Presets.Expander="Экспандер"
|
||||
Expander.Presets.Gate="Гейт"
|
||||
LumaKeyFilter="Яркостный ключ"
|
||||
Luma.LumaMax="Макс. яркость"
|
||||
Luma.LumaMin="Мин. яркость"
|
||||
Luma.LumaMaxSmooth="Сглаживание макс. яркости"
|
||||
Luma.LumaMinSmooth="Сглаживание мин. яркости"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,26 @@
|
|||
ColorFilter="Korekcia farieb"
|
||||
ColorGradeFilter="Použiť LUT"
|
||||
MaskFilter="Maska/miešanie obrazu"
|
||||
AsyncDelayFilter="Oneskorenie videa (Async)"
|
||||
CropFilter="Orezať/odsadiť"
|
||||
ScrollFilter="Rolovanie"
|
||||
ChromaKeyFilter="Chroma Key"
|
||||
ColorKeyFilter="Farebný kľúč"
|
||||
SharpnessFilter="Zaostriť"
|
||||
ScaleFilter="Škálovanie/pomer strán"
|
||||
GPUDelayFilter="Oneskorenie vykresľovania"
|
||||
UndistortCenter="Odstrániť skreslenie pri škálovaní zo širokouhlého obrazu"
|
||||
NoiseGate="Hluková brána"
|
||||
NoiseSuppress="Potlačenie šumu"
|
||||
InvertPolarity="Invertovať polaritu"
|
||||
Gain="Zosilnenie"
|
||||
DelayMs="Oneskorenie (v milisekundách)"
|
||||
Type="Typ"
|
||||
MaskBlendType.MaskColor="Maska priehľadnosti (kanál farieb)"
|
||||
MaskBlendType.MaskAlpha="Maska priehľadnosti (kanál priehľadnosti)"
|
||||
MaskBlendType.BlendMultiply="Zmiešať (násobenie)"
|
||||
MaskBlendType.BlendAddition="Zmiešať (sčítanie)"
|
||||
MaskBlendType.BlendSubtraction="Zmiešať (odčítanie)"
|
||||
Path="Cesta"
|
||||
Color="Farba"
|
||||
Opacity="Priehľadnosť"
|
||||
|
|
@ -21,6 +32,8 @@ BrowsePath.AllFiles="Všetky súbory"
|
|||
KeyColorType="Typ kľúčovej farby"
|
||||
KeyColor="Kľúčová farba"
|
||||
Similarity="Podobnosť (1-1000)"
|
||||
Smoothness="Hladkosť (1-1000)"
|
||||
ColorSpillReduction="Redukcia color spill-u (1-1000)"
|
||||
Crop.Left="Vľavo"
|
||||
Crop.Right="Vpravo"
|
||||
Crop.Top="Hore"
|
||||
|
|
@ -28,6 +41,8 @@ Crop.Bottom="Dole"
|
|||
Crop.Width="Šírka"
|
||||
Crop.Height="Výška"
|
||||
Crop.Relative="Relatívne"
|
||||
ScrollFilter.SpeedX="Horizontálna rýchlosť"
|
||||
ScrollFilter.SpeedY="Vertikálna rýchlosť"
|
||||
ScrollFilter.LimitWidth="Obmedziť šírku"
|
||||
ScrollFilter.LimitHeight="Obmedziť výšku"
|
||||
CustomColor="Vlastná farba"
|
||||
|
|
@ -37,16 +52,27 @@ Blue="Modrá"
|
|||
Magenta="Purpurová"
|
||||
NoiseGate.OpenThreshold="Hladina otvorenia (dB)"
|
||||
NoiseGate.CloseThreshold="Hladina zatvorenia (dB)"
|
||||
NoiseGate.AttackTime="Čas nástupu (milisekundy)"
|
||||
NoiseGate.HoldTime="Čas podržania (milisekundy)"
|
||||
NoiseGate.ReleaseTime="Čas uvoľnenia (milisekundy)"
|
||||
Gain.GainDB="Zisk (dB)"
|
||||
StretchImage="Roztiahnutie obrázka (pomer strán obrazu zahodiť)"
|
||||
Resolution="Rozlíšenie"
|
||||
Base.Canvas="Základné (Plátnové) rozlíšenie"
|
||||
None="Žiadne"
|
||||
ScaleFiltering="Filtrovanie rozsahu"
|
||||
ScaleFiltering.Point="Bodové"
|
||||
ScaleFiltering.Bilinear="Bilineárne"
|
||||
ScaleFiltering.Bicubic="Bikubické"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
NoiseSuppress.SuppressLevel="Úroveň potlačenia (dB)"
|
||||
Saturation="Sýtosť"
|
||||
HueShift="Posun odtieňa"
|
||||
Amount="Množstvo"
|
||||
Compressor="Kompresor"
|
||||
Compressor.Ratio="Pomer (X:1)"
|
||||
Compressor.Threshold="Prah (dB)"
|
||||
Compressor.AttackTime="Nástup (ms)"
|
||||
Compressor.ReleaseTime="Uvoľnenie (ms)"
|
||||
Compressor.OutputGain="Zosilnenie výstupu (dB)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
ColorFilter="Promena boja"
|
||||
ColorGradeFilter="Primeni LUT"
|
||||
MaskFilter="Slika maske i stapanja"
|
||||
AsyncDelayFilter="Video pauza (asinhrono)"
|
||||
AsyncDelayFilter="Video kašnjenje (asinhrono)"
|
||||
CropFilter="Odsecanje/okvir"
|
||||
ScrollFilter="Pomeranje"
|
||||
ChromaKeyFilter="Ključ providnosti"
|
||||
ColorKeyFilter="Ključ boje"
|
||||
SharpnessFilter="Izoštravanje"
|
||||
ScaleFilter="Uvećanje/Odnos"
|
||||
GPUDelayFilter="Kašnjenje u radu"
|
||||
UndistortCenter="Ukloni distorziju centra slike tokom skaliranja sa ultra široke slike na normalnu"
|
||||
NoiseGate="Kapija šuma"
|
||||
NoiseSuppress="Suzbijanje šuma"
|
||||
InvertPolarity="Invertuj polaritet"
|
||||
Gain="Pojačanje"
|
||||
DelayMs="Pauza (milisekunde)"
|
||||
DelayMs="Kašnjenje (milisekunde)"
|
||||
Type="Vrsta"
|
||||
MaskBlendType.MaskColor="Maska prozirnosti (kanal boje)"
|
||||
MaskBlendType.MaskAlpha="Maska prozirnosti (prozirni kanal)"
|
||||
|
|
@ -54,6 +58,7 @@ NoiseGate.ReleaseTime="Vreme otpuštanja (milisekunde)"
|
|||
Gain.GainDB="Pojačanje (dB)"
|
||||
StretchImage="Istegni sliku (zanemari odnos visine i širine slike)"
|
||||
Resolution="Rezolucija"
|
||||
Base.Canvas="Osnovna rezolucija"
|
||||
None="Nijedno"
|
||||
ScaleFiltering="Filter uvećanja"
|
||||
ScaleFiltering.Point="Tačka"
|
||||
|
|
@ -61,4 +66,30 @@ ScaleFiltering.Bilinear="Bilinearno"
|
|||
ScaleFiltering.Bicubic="Bikubično"
|
||||
ScaleFiltering.Lanczos="Lankoz"
|
||||
NoiseSuppress.SuppressLevel="Nivo suzbijanja (dB)"
|
||||
Saturation="Zasićenje"
|
||||
HueShift="Promena nijanse"
|
||||
Amount="Količina"
|
||||
Compressor="Kompresor"
|
||||
Compressor.Ratio="Razmera (X:1)"
|
||||
Compressor.Threshold="Prag (dB)"
|
||||
Compressor.AttackTime="Napad (ms)"
|
||||
Compressor.ReleaseTime="Vreme otpuštanja (ms)"
|
||||
Compressor.OutputGain="Pojačanje izlaza (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Izvor"
|
||||
Limiter="Limiter"
|
||||
Limiter.Threshold="Prag (dB)"
|
||||
Limiter.ReleaseTime="Vreme otpuštanja (ms)"
|
||||
Expander="Ekspander"
|
||||
Expander.Ratio="Razmera (X:1)"
|
||||
Expander.Threshold="Prag (dB)"
|
||||
Expander.AttackTime="Napad (ms)"
|
||||
Expander.ReleaseTime="Vreme otpuštanja (ms)"
|
||||
Expander.OutputGain="Pojačanje izlaza (dB)"
|
||||
Expander.Detector="Detekcija"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Vrhunac (ekspander reaguje na kratke vrhunce)"
|
||||
Expander.None="Bez"
|
||||
Expander.Presets="Predefinisana podešavanja"
|
||||
Expander.Presets.Expander="Ekspander"
|
||||
Expander.Presets.Gate="Prolaz (eng. Gate)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
ColorFilter="Промена боја"
|
||||
ColorGradeFilter="Примени LUT"
|
||||
MaskFilter="Слика маске и стапања"
|
||||
AsyncDelayFilter="Видео пауза (асинхроно)"
|
||||
AsyncDelayFilter="Видео кашњење (асинхроно)"
|
||||
CropFilter="Одсецање/оквир"
|
||||
ScrollFilter="Померање"
|
||||
ChromaKeyFilter="Кључ провидности"
|
||||
ColorKeyFilter="Кључ боје"
|
||||
SharpnessFilter="Изоштравање"
|
||||
ScaleFilter="Увећање/однос"
|
||||
GPUDelayFilter="Кашњење у раду"
|
||||
UndistortCenter="Уклони дисторзију центра слике током скалирања са ултра широке слике на нормалну"
|
||||
NoiseGate="Капија шума"
|
||||
NoiseSuppress="Сузбијање шума"
|
||||
InvertPolarity="Инвертуј поларитет"
|
||||
Gain="Појачање"
|
||||
DelayMs="Пауза (милисекунде)"
|
||||
DelayMs="Кашњење (милисекунде)"
|
||||
Type="Врста"
|
||||
MaskBlendType.MaskColor="Маска прозирности (канал боје)"
|
||||
MaskBlendType.MaskAlpha="Маска прозирности (прозирни канал)"
|
||||
|
|
@ -54,6 +58,7 @@ NoiseGate.ReleaseTime="Време отпуштања (милисекунде)"
|
|||
Gain.GainDB="Појачање (dB)"
|
||||
StretchImage="Истегни слику (занемари однос висине и ширине слике)"
|
||||
Resolution="Резолуција"
|
||||
Base.Canvas="Основна резолуција"
|
||||
None="Ниједно"
|
||||
ScaleFiltering="Филтер увећања"
|
||||
ScaleFiltering.Point="Тачка"
|
||||
|
|
@ -61,4 +66,30 @@ ScaleFiltering.Bilinear="Билинеарно"
|
|||
ScaleFiltering.Bicubic="Бикубично"
|
||||
ScaleFiltering.Lanczos="Ланкоз"
|
||||
NoiseSuppress.SuppressLevel="Ниво сузбијања (dB)"
|
||||
Saturation="Засићење"
|
||||
HueShift="Промена нијансе"
|
||||
Amount="Количина"
|
||||
Compressor="Компресор"
|
||||
Compressor.Ratio="Размера (X:1)"
|
||||
Compressor.Threshold="Праг (dB)"
|
||||
Compressor.AttackTime="Напад (ms)"
|
||||
Compressor.ReleaseTime="Време отпуштања (ms)"
|
||||
Compressor.OutputGain="Појачање излаза (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking Извор"
|
||||
Limiter="Лимитер"
|
||||
Limiter.Threshold="Праг (dB)"
|
||||
Limiter.ReleaseTime="Време отпуштања (ms)"
|
||||
Expander="Експандер"
|
||||
Expander.Ratio="Размера (X:1)"
|
||||
Expander.Threshold="Праг (dB)"
|
||||
Expander.AttackTime="Напад (ms)"
|
||||
Expander.ReleaseTime="Време отпуштања (ms)"
|
||||
Expander.OutputGain="Појачање излаза (dB)"
|
||||
Expander.Detector="Детекција"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Врхунац (експандер реагује на кратке врхунце)"
|
||||
Expander.None="Без"
|
||||
Expander.Presets="Предефинисана подешавања"
|
||||
Expander.Presets.Expander="Експандер"
|
||||
Expander.Presets.Gate="Пролаз (енг. Gate)"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Renderingsfördröjning"
|
|||
UndistortCenter="Återställ bildens centrum vid skalning från ultrawide"
|
||||
NoiseGate="Brusblockering"
|
||||
NoiseSuppress="Brusreducering"
|
||||
InvertPolarity="Invertera polaritet"
|
||||
Gain="Förstärkning"
|
||||
DelayMs="Fördröjning (millisekunder)"
|
||||
Type="Typ"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Släpptid (millisekunder)"
|
|||
Gain.GainDB="Förstärkning (dB)"
|
||||
StretchImage="Sträck bild (ignorera bildförhållandet)"
|
||||
Resolution="Upplösning"
|
||||
Base.Canvas="Grundupplösning (kanvas)"
|
||||
None="Ingen"
|
||||
ScaleFiltering="Skalningsfiltrering"
|
||||
ScaleFiltering.Point="Punkt"
|
||||
ScaleFiltering.Bilinear="Bilinjär"
|
||||
ScaleFiltering.Bicubic="Bikubisk"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="Område"
|
||||
NoiseSuppress.SuppressLevel="Brusreduceringsnivå (dB)"
|
||||
Saturation="Mättnad"
|
||||
HueShift="Nyansväxling"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Attack (ms)"
|
|||
Compressor.ReleaseTime="Frigör (ms)"
|
||||
Compressor.OutputGain="Utmatningsförstärkning (dB)"
|
||||
Compressor.SidechainSource="Sidechain/Ducking-källa"
|
||||
Limiter="Begränsare"
|
||||
Limiter.Threshold="Tröskel (dB)"
|
||||
Limiter.ReleaseTime="Frigör (ms)"
|
||||
Expander="Utvidgare"
|
||||
Expander.Ratio="Förhållande (X:1)"
|
||||
Expander.Threshold="Tröskel (dB)"
|
||||
Expander.AttackTime="Attack (ms)"
|
||||
Expander.ReleaseTime="Frigör (ms)"
|
||||
Expander.OutputGain="Utmatningsförstärkning (dB)"
|
||||
Expander.Detector="Identifiering"
|
||||
Expander.RMS="RMS"
|
||||
Expander.Peak="Maxpunkt"
|
||||
Expander.None="Ingen"
|
||||
Expander.Presets="Förinställningar"
|
||||
Expander.Presets.Expander="Utvidgare"
|
||||
Expander.Presets.Gate="Port"
|
||||
LumaKeyFilter="Ljusstyrkefilter"
|
||||
Luma.LumaMax="Maximal ljusstyrka"
|
||||
Luma.LumaMin="Minimal ljusstyrka"
|
||||
Luma.LumaMaxSmooth="Max. utjämning av ljusstyrka"
|
||||
Luma.LumaMinSmooth="Min. utjämning av ljusstyrka"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ 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"
|
||||
InvertPolarity="Polariteyi ters çevir"
|
||||
Gain="Kazanç"
|
||||
DelayMs="Gecikme (milisaniye)"
|
||||
Type="Türü"
|
||||
|
|
@ -57,6 +58,7 @@ NoiseGate.ReleaseTime="Bırakma Süresi (milisaniye)"
|
|||
Gain.GainDB="Kazanç (dB)"
|
||||
StretchImage="Görüntüyü Uzat (görüntü en-boy oranını görmezden gel)"
|
||||
Resolution="Çözünürlük"
|
||||
Base.Canvas="Temel (Tuval) Çözünürlüğü"
|
||||
None="Hiçbiri"
|
||||
ScaleFiltering="Ölçek Filtreleme"
|
||||
ScaleFiltering.Point="Nokta"
|
||||
|
|
@ -74,4 +76,18 @@ Compressor.AttackTime="Atak (ms)"
|
|||
Compressor.ReleaseTime="Bırakma (ms)"
|
||||
Compressor.OutputGain="Çıkış Kazancı (dB)"
|
||||
Compressor.SidechainSource="Yan-Zincir/Alçaltma Kaynağı"
|
||||
Limiter="Sınırlayıcı"
|
||||
Limiter.Threshold="Eşik (dB)"
|
||||
Limiter.ReleaseTime="Bırakma süresi (ms)"
|
||||
Expander="Genişletici"
|
||||
Expander.Ratio="Oran (X:1)"
|
||||
Expander.Threshold="Eşik (dB)"
|
||||
Expander.AttackTime="Tepki Süresi (ms)"
|
||||
Expander.ReleaseTime="Bırakma Süresi (ms)"
|
||||
Expander.OutputGain="Çıkış Kazancı (dB)"
|
||||
Expander.Detector="Algılama"
|
||||
Expander.None="Hiçbiri"
|
||||
Expander.Presets="Hazır Ayarlar"
|
||||
Expander.Presets.Expander="Genişletici"
|
||||
Expander.Presets.Gate="Geçit"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="Затримка візуалізації"
|
|||
UndistortCenter="Зменшити викривлення у центрі, якщо масштабувати з надширокоформатного"
|
||||
NoiseGate="Пороговий шумопонижувач"
|
||||
NoiseSuppress="Подавлення шуму"
|
||||
InvertPolarity="Інверсія сигналу"
|
||||
Gain="Підсилення"
|
||||
DelayMs="Затримка (мілісекунд)"
|
||||
Type="Тип"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="Тривалість спаду сигналу (мілі
|
|||
Gain.GainDB="Підсилення (дБ)"
|
||||
StretchImage="Розтягнути зображення (ігнорувати пропорції зображення)"
|
||||
Resolution="Новий розмір"
|
||||
Base.Canvas="Роздільна здатність (Полотно)"
|
||||
None="Не вказано"
|
||||
ScaleFiltering="Фільтр масштабування"
|
||||
ScaleFiltering.Point="Ступінчастий"
|
||||
ScaleFiltering.Bilinear="Білінійний"
|
||||
ScaleFiltering.Bicubic="Бікубічний"
|
||||
ScaleFiltering.Lanczos="Ланцош"
|
||||
ScaleFiltering.Area="Усереднення площ"
|
||||
NoiseSuppress.SuppressLevel="Рівень подавлення (дБ)"
|
||||
Saturation="Насиченість"
|
||||
HueShift="Відтінок"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="Атака (мс)"
|
|||
Compressor.ReleaseTime="Затухання (мс)"
|
||||
Compressor.OutputGain="Підсилення виводу (dB)"
|
||||
Compressor.SidechainSource="Джерело Коригування/Приглушення"
|
||||
Limiter="Обмежувач амплітуди"
|
||||
Limiter.Threshold="Поріг (дБ)"
|
||||
Limiter.ReleaseTime="Затухання (мс)"
|
||||
Expander="Експандер"
|
||||
Expander.Ratio="Відношення (X:1)"
|
||||
Expander.Threshold="Поріг (дБ)"
|
||||
Expander.AttackTime="Атака (мс)"
|
||||
Expander.ReleaseTime="Затухання (мс)"
|
||||
Expander.OutputGain="Підсилення виводу (dB)"
|
||||
Expander.Detector="Детектор"
|
||||
Expander.RMS="Середньоквадратичний (RMS)"
|
||||
Expander.Peak="Піковий"
|
||||
Expander.None="Немає (миттєві значення)"
|
||||
Expander.Presets="Шаблони"
|
||||
Expander.Presets.Expander="Експандер"
|
||||
Expander.Presets.Gate="Пороговий"
|
||||
LumaKeyFilter="Фільтр яскравості"
|
||||
Luma.LumaMax="Максимум яскравості"
|
||||
Luma.LumaMin="Мінімум яскравості"
|
||||
Luma.LumaMaxSmooth="Максимум яскравості припуск"
|
||||
Luma.LumaMinSmooth="Мінімум яскравості припуск"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="渲染延迟"
|
|||
UndistortCenter="当从超宽扩展时, 让图片中心不失真"
|
||||
NoiseGate="噪音阈值"
|
||||
NoiseSuppress="噪声抑制"
|
||||
InvertPolarity="反转极性"
|
||||
Gain="增益"
|
||||
DelayMs="延迟(毫秒)"
|
||||
Type="类型"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="释放时间(毫秒)"
|
|||
Gain.GainDB="增益 (dB)"
|
||||
StretchImage="伸展图像 (丢弃图像纵横比)"
|
||||
Resolution="分辨率"
|
||||
Base.Canvas="基础 (Canvas) 分辨率"
|
||||
None="无"
|
||||
ScaleFiltering="尺度滤波"
|
||||
ScaleFiltering.Point="点"
|
||||
ScaleFiltering.Bilinear="双线性算法"
|
||||
ScaleFiltering.Bicubic="双立方算法"
|
||||
ScaleFiltering.Lanczos="兰索斯算法"
|
||||
ScaleFiltering.Area="区域"
|
||||
NoiseSuppress.SuppressLevel="抑制程度 (dB)"
|
||||
Saturation="饱和度"
|
||||
HueShift="色调偏移"
|
||||
|
|
@ -70,8 +73,29 @@ Amount="数值"
|
|||
Compressor="压缩器"
|
||||
Compressor.Ratio="比率 (X:1)"
|
||||
Compressor.Threshold="阈值 (dB)"
|
||||
Compressor.AttackTime="攻击 (ms)"
|
||||
Compressor.AttackTime="起始时间(毫秒)"
|
||||
Compressor.ReleaseTime="释放 (ms)"
|
||||
Compressor.OutputGain="输出增益 (dB)"
|
||||
Compressor.SidechainSource="避免来源"
|
||||
Limiter="限幅"
|
||||
Limiter.Threshold="阈值 (dB)"
|
||||
Limiter.ReleaseTime="释放 (ms)"
|
||||
Expander="扩展效果"
|
||||
Expander.Ratio="比率 (X:1)"
|
||||
Expander.Threshold="阈值 (dB)"
|
||||
Expander.AttackTime="起始时间(毫秒)"
|
||||
Expander.ReleaseTime="释放时间(毫秒)"
|
||||
Expander.OutputGain="输出增益 (dB)"
|
||||
Expander.Detector="检测"
|
||||
Expander.RMS="均方根"
|
||||
Expander.Peak="峰值"
|
||||
Expander.None="无"
|
||||
Expander.Presets="预设"
|
||||
Expander.Presets.Expander="扩展效果"
|
||||
Expander.Presets.Gate="门限"
|
||||
LumaKeyFilter="亮度键"
|
||||
Luma.LumaMax="最大亮度"
|
||||
Luma.LumaMin="最小亮度"
|
||||
Luma.LumaMaxSmooth="最大亮度平滑"
|
||||
Luma.LumaMinSmooth="最小亮度平滑"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ GPUDelayFilter="繪製延遲"
|
|||
UndistortCenter="從超寬影像縮放時彌補影像中心的畸變"
|
||||
NoiseGate="噪音閾"
|
||||
NoiseSuppress="雜訊抑制"
|
||||
InvertPolarity="反轉極性"
|
||||
Gain="增益"
|
||||
DelayMs="延遲 (毫秒)"
|
||||
Type="類型"
|
||||
|
|
@ -57,12 +58,14 @@ NoiseGate.ReleaseTime="釋音時間 (Release time)(毫秒)"
|
|||
Gain.GainDB="增益 (dB)"
|
||||
StretchImage="伸展圖像 (無視圖像比例)"
|
||||
Resolution="解析度"
|
||||
Base.Canvas="來源(畫布)解析度"
|
||||
None="無"
|
||||
ScaleFiltering="縮放濾鏡"
|
||||
ScaleFiltering.Point="點"
|
||||
ScaleFiltering.Bilinear="雙線性插值"
|
||||
ScaleFiltering.Bicubic="雙三次插值"
|
||||
ScaleFiltering.Lanczos="Lanczos"
|
||||
ScaleFiltering.Area="範圍"
|
||||
NoiseSuppress.SuppressLevel="抑制標準 (dB)"
|
||||
Saturation="飽合度"
|
||||
HueShift="色調偏移"
|
||||
|
|
@ -74,4 +77,25 @@ Compressor.AttackTime="起始時間 (ms)"
|
|||
Compressor.ReleaseTime="釋放時間 (ms)"
|
||||
Compressor.OutputGain="輸出增益 (dB)"
|
||||
Compressor.SidechainSource="側鏈/回避源"
|
||||
Limiter="限制器"
|
||||
Limiter.Threshold="臨界值 (dB)"
|
||||
Limiter.ReleaseTime="釋放時間 (ms)"
|
||||
Expander="展開特效"
|
||||
Expander.Ratio="比例 (X:1)"
|
||||
Expander.Threshold="閾值 (dB)"
|
||||
Expander.AttackTime="起始時間 (ms)"
|
||||
Expander.ReleaseTime="釋放時間 (ms)"
|
||||
Expander.OutputGain="輸出增益 (dB)"
|
||||
Expander.Detector="偵測"
|
||||
Expander.RMS="方均根"
|
||||
Expander.Peak="峰值"
|
||||
Expander.None="無"
|
||||
Expander.Presets="預先設定"
|
||||
Expander.Presets.Expander="展開特效"
|
||||
Expander.Presets.Gate="開門特效"
|
||||
LumaKeyFilter="亮度鍵"
|
||||
Luma.LumaMax="亮度最大值"
|
||||
Luma.LumaMin="亮度最小值"
|
||||
Luma.LumaMaxSmooth="亮度最大平滑度"
|
||||
Luma.LumaMinSmooth="亮度最小平滑度"
|
||||
|
||||
|
|
|
|||
51
plugins/obs-filters/data/luma_key_filter.effect
Normal file
51
plugins/obs-filters/data/luma_key_filter.effect
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
uniform float4x4 ViewProj;
|
||||
uniform texture2d image;
|
||||
|
||||
uniform float lumaMax;
|
||||
uniform float lumaMin;
|
||||
uniform float lumaMaxSmooth;
|
||||
uniform float lumaMinSmooth;
|
||||
|
||||
sampler_state textureSampler {
|
||||
Filter = Linear;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
};
|
||||
|
||||
struct VertData {
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
VertData VSDefault(VertData v_in)
|
||||
{
|
||||
VertData vert_out;
|
||||
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
|
||||
vert_out.uv = v_in.uv;
|
||||
return vert_out;
|
||||
}
|
||||
|
||||
float4 PSALumaKeyRGBA(VertData v_in) : TARGET
|
||||
{
|
||||
float4 rgba = image.Sample(textureSampler, v_in.uv);
|
||||
|
||||
float4 lumaCoef = float4(0.2989, 0.5870, 0.1140, 0.0);
|
||||
|
||||
float luminance = dot(rgba, lumaCoef);
|
||||
|
||||
float clo = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luminance);
|
||||
float chi = 1. - smoothstep(lumaMax - lumaMaxSmooth, lumaMax, luminance);
|
||||
|
||||
float amask = clo * chi;
|
||||
|
||||
return float4(rgba.rgb, amask);
|
||||
}
|
||||
|
||||
technique Draw
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(v_in);
|
||||
pixel_shader = PSALumaKeyRGBA(v_in);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,6 @@ uniform float4x4 ViewProj;
|
|||
uniform texture2d image;
|
||||
|
||||
uniform texture2d target;
|
||||
uniform float4 color = {1.0, 1.0, 1.0, 1.0};
|
||||
|
||||
uniform float sharpness;
|
||||
uniform float texture_width;
|
||||
|
|
@ -24,7 +23,6 @@ struct VertInOut {
|
|||
|
||||
struct VertOut {
|
||||
float4 pos : POSITION;
|
||||
float4 col : COLOR;
|
||||
float2 uv : TEXCOORD0;
|
||||
float4 t1 : TEXCOORD1;
|
||||
float4 t2 : TEXCOORD2;
|
||||
|
|
@ -36,7 +34,6 @@ VertOut VSDefault(VertInOut vert_in)
|
|||
VertOut vert_out;
|
||||
vert_out.pos = mul(float4(vert_in.pos.xyz, 1.0), ViewProj);
|
||||
vert_out.uv = vert_in.uv;
|
||||
vert_out.col = color;
|
||||
|
||||
float2 ps = float2(1.0/texture_width, 1.0/texture_height);
|
||||
float dx = ps.x;
|
||||
|
|
@ -52,23 +49,23 @@ float4 PSDrawBare(VertOut vert_in) : TARGET
|
|||
{
|
||||
float4 E = image.Sample(def_sampler, vert_in.uv);
|
||||
|
||||
float4 colorx = 8*E;
|
||||
float4 color = 8*E;
|
||||
float4 B = image.Sample(def_sampler, vert_in.t1.yw);
|
||||
float4 D = image.Sample(def_sampler, vert_in.t2.xw);
|
||||
float4 F = image.Sample(def_sampler, vert_in.t2.zw);
|
||||
float4 H = image.Sample(def_sampler, vert_in.t3.yw);
|
||||
colorx -= image.Sample(def_sampler, vert_in.t1.xw);
|
||||
colorx -= B;
|
||||
colorx -= image.Sample(def_sampler, vert_in.t1.zw);
|
||||
colorx -= D;
|
||||
colorx -= F;
|
||||
colorx -= image.Sample(def_sampler, vert_in.t3.xw);
|
||||
colorx -= H;
|
||||
colorx -= image.Sample(def_sampler, vert_in.t3.zw);
|
||||
color -= image.Sample(def_sampler, vert_in.t1.xw);
|
||||
color -= B;
|
||||
color -= image.Sample(def_sampler, vert_in.t1.zw);
|
||||
color -= D;
|
||||
color -= F;
|
||||
color -= image.Sample(def_sampler, vert_in.t3.xw);
|
||||
color -= H;
|
||||
color -= image.Sample(def_sampler, vert_in.t3.zw);
|
||||
|
||||
colorx = ((E!=F && E!=D) || (E!=B && E!=H)) ? saturate(E + colorx*sharpness) : E;
|
||||
color = ((E!=F && E!=D) || (E!=B && E!=H)) ? saturate(E + color*sharpness) : E;
|
||||
|
||||
return colorx;
|
||||
return color;
|
||||
}
|
||||
|
||||
technique Draw
|
||||
|
|
|
|||
419
plugins/obs-filters/expander-filter.c
Normal file
419
plugins/obs-filters/expander-filter.c
Normal file
|
|
@ -0,0 +1,419 @@
|
|||
#include <stdint.h>
|
||||
#include <inttypes.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <obs-module.h>
|
||||
#include <media-io/audio-math.h>
|
||||
#include <util/platform.h>
|
||||
#include <util/circlebuf.h>
|
||||
#include <util/threading.h>
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
#define do_log(level, format, ...) \
|
||||
blog(level, "[expander: '%s'] " format, \
|
||||
obs_source_get_name(cd->context), ##__VA_ARGS__)
|
||||
|
||||
#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
|
||||
#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__)
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__)
|
||||
#else
|
||||
#define debug(format, ...)
|
||||
#endif
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
#define S_RATIO "ratio"
|
||||
#define S_THRESHOLD "threshold"
|
||||
#define S_ATTACK_TIME "attack_time"
|
||||
#define S_RELEASE_TIME "release_time"
|
||||
#define S_OUTPUT_GAIN "output_gain"
|
||||
#define S_DETECTOR "detector"
|
||||
#define S_PRESETS "presets"
|
||||
|
||||
#define MT_ obs_module_text
|
||||
#define TEXT_RATIO MT_("expander.Ratio")
|
||||
#define TEXT_THRESHOLD MT_("expander.Threshold")
|
||||
#define TEXT_ATTACK_TIME MT_("expander.AttackTime")
|
||||
#define TEXT_RELEASE_TIME MT_("expander.ReleaseTime")
|
||||
#define TEXT_OUTPUT_GAIN MT_("expander.OutputGain")
|
||||
#define TEXT_DETECTOR MT_("expander.Detector")
|
||||
#define TEXT_PEAK MT_("expander.Peak")
|
||||
#define TEXT_RMS MT_("expander.RMS")
|
||||
#define TEXT_NONE MT_("expander.None")
|
||||
#define TEXT_PRESETS MT_("expander.Presets")
|
||||
#define TEXT_PRESETS_EXP MT_("expander.Presets.Expander")
|
||||
#define TEXT_PRESETS_GATE MT_("expander.Presets.Gate")
|
||||
|
||||
#define MIN_RATIO 1.0f
|
||||
#define MAX_RATIO 20.0f
|
||||
#define MIN_THRESHOLD_DB -60.0f
|
||||
#define MAX_THRESHOLD_DB 0.0f
|
||||
#define MIN_OUTPUT_GAIN_DB -32.0f
|
||||
#define MAX_OUTPUT_GAIN_DB 32.0f
|
||||
#define MIN_ATK_RLS_MS 1
|
||||
#define MAX_RLS_MS 1000
|
||||
#define MAX_ATK_MS 100
|
||||
#define DEFAULT_AUDIO_BUF_MS 10
|
||||
|
||||
#define MS_IN_S 1000
|
||||
#define MS_IN_S_F ((float)MS_IN_S)
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
struct expander_data {
|
||||
obs_source_t *context;
|
||||
float *envelope_buf[MAX_AUDIO_CHANNELS];
|
||||
size_t envelope_buf_len;
|
||||
|
||||
float ratio;
|
||||
float threshold;
|
||||
float attack_gain;
|
||||
float release_gain;
|
||||
float output_gain;
|
||||
|
||||
size_t num_channels;
|
||||
size_t sample_rate;
|
||||
float envelope[MAX_AUDIO_CHANNELS];
|
||||
float slope;
|
||||
int detector;
|
||||
float runave[MAX_AUDIO_CHANNELS];
|
||||
bool is_gate;
|
||||
float *runaverage[MAX_AUDIO_CHANNELS];
|
||||
size_t runaverage_len;
|
||||
float *gaindB[MAX_AUDIO_CHANNELS];
|
||||
size_t gaindB_len;
|
||||
float gaindB_buf[MAX_AUDIO_CHANNELS];
|
||||
float *env_in;
|
||||
size_t env_in_len;
|
||||
};
|
||||
|
||||
enum {
|
||||
RMS_DETECT,
|
||||
RMS_STILLWELL_DETECT,
|
||||
PEAK_DETECT,
|
||||
NO_DETECT,
|
||||
};
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
static void resize_env_buffer(struct expander_data *cd, size_t len)
|
||||
{
|
||||
cd->envelope_buf_len = len;
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
|
||||
cd->envelope_buf[i] = brealloc(cd->envelope_buf[i],
|
||||
cd->envelope_buf_len * sizeof(float));
|
||||
}
|
||||
|
||||
static void resize_runaverage_buffer(struct expander_data *cd, size_t len)
|
||||
{
|
||||
cd->runaverage_len = len;
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
|
||||
cd->runaverage[i] = brealloc(cd->runaverage[i],
|
||||
cd->runaverage_len * sizeof(float));
|
||||
}
|
||||
|
||||
static void resize_env_in_buffer(struct expander_data *cd, size_t len)
|
||||
{
|
||||
cd->env_in_len = len;
|
||||
cd->env_in = brealloc(cd->env_in, cd->env_in_len * sizeof(float));
|
||||
}
|
||||
|
||||
static void resize_gaindB_buffer(struct expander_data *cd, size_t len)
|
||||
{
|
||||
cd->gaindB_len = len;
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
|
||||
cd->gaindB[i] = brealloc(cd->gaindB[i],
|
||||
cd->gaindB_len * sizeof(float));
|
||||
}
|
||||
|
||||
static inline float gain_coefficient(uint32_t sample_rate, float time)
|
||||
{
|
||||
return expf(-1.0f / (sample_rate * time));
|
||||
}
|
||||
|
||||
static const char *expander_name(void *unused)
|
||||
{
|
||||
UNUSED_PARAMETER(unused);
|
||||
return obs_module_text("Expander");
|
||||
}
|
||||
|
||||
static void expander_defaults(obs_data_t *s)
|
||||
{
|
||||
const char *presets = obs_data_get_string(s, S_PRESETS);
|
||||
bool is_expander_preset = true;
|
||||
if (strcmp(presets, "gate") == 0)
|
||||
is_expander_preset = false;
|
||||
obs_data_set_default_string(s, S_PRESETS, is_expander_preset ?
|
||||
"expander" : "gate");
|
||||
obs_data_set_default_double(s, S_RATIO, is_expander_preset ?
|
||||
2.0 : 10.0);
|
||||
obs_data_set_default_double(s, S_THRESHOLD, -40.0f);
|
||||
obs_data_set_default_int(s, S_ATTACK_TIME, 10);
|
||||
obs_data_set_default_int(s, S_RELEASE_TIME, is_expander_preset ?
|
||||
50 : 125);
|
||||
obs_data_set_default_double(s, S_OUTPUT_GAIN, 0.0);
|
||||
obs_data_set_default_string(s, S_DETECTOR, "RMS");
|
||||
}
|
||||
|
||||
static void expander_update(void *data, obs_data_t *s)
|
||||
{
|
||||
struct expander_data *cd = data;
|
||||
const char *presets = obs_data_get_string(s, S_PRESETS);
|
||||
if (strcmp(presets, "expander") == 0 && cd->is_gate) {
|
||||
obs_data_clear(s);
|
||||
obs_data_set_string(s, S_PRESETS, "expander");
|
||||
expander_defaults(s);
|
||||
cd->is_gate = false;
|
||||
}
|
||||
if (strcmp(presets, "gate") == 0 && !cd->is_gate) {
|
||||
obs_data_clear(s);
|
||||
obs_data_set_string(s, S_PRESETS, "gate");
|
||||
expander_defaults(s);
|
||||
cd->is_gate = true;
|
||||
}
|
||||
|
||||
const uint32_t sample_rate =
|
||||
audio_output_get_sample_rate(obs_get_audio());
|
||||
const size_t num_channels =
|
||||
audio_output_get_channels(obs_get_audio());
|
||||
const float attack_time_ms =
|
||||
(float)obs_data_get_int(s, S_ATTACK_TIME);
|
||||
const float release_time_ms =
|
||||
(float)obs_data_get_int(s, S_RELEASE_TIME);
|
||||
const float output_gain_db =
|
||||
(float)obs_data_get_double(s, S_OUTPUT_GAIN);
|
||||
|
||||
cd->ratio = (float)obs_data_get_double(s, S_RATIO);
|
||||
|
||||
cd->threshold = (float)obs_data_get_double(s, S_THRESHOLD);
|
||||
cd->attack_gain = gain_coefficient(sample_rate,
|
||||
attack_time_ms / MS_IN_S_F);
|
||||
cd->release_gain = gain_coefficient(sample_rate,
|
||||
release_time_ms / MS_IN_S_F);
|
||||
cd->output_gain = db_to_mul(output_gain_db);
|
||||
cd->num_channels = num_channels;
|
||||
cd->sample_rate = sample_rate;
|
||||
cd->slope = 1.0f - cd->ratio;
|
||||
|
||||
const char *detect_mode = obs_data_get_string(s, S_DETECTOR);
|
||||
if (strcmp(detect_mode, "RMS") == 0)
|
||||
cd->detector = RMS_DETECT;
|
||||
if (strcmp(detect_mode, "peak") == 0)
|
||||
cd->detector = PEAK_DETECT;
|
||||
|
||||
size_t sample_len = sample_rate * DEFAULT_AUDIO_BUF_MS / MS_IN_S;
|
||||
if (cd->envelope_buf_len == 0)
|
||||
resize_env_buffer(cd, sample_len);
|
||||
if (cd->runaverage_len == 0)
|
||||
resize_runaverage_buffer(cd, sample_len);
|
||||
if (cd->env_in_len == 0)
|
||||
resize_env_in_buffer(cd, sample_len);
|
||||
if (cd->gaindB_len == 0)
|
||||
resize_gaindB_buffer(cd, sample_len);
|
||||
}
|
||||
|
||||
static void *expander_create(obs_data_t *settings, obs_source_t *filter)
|
||||
{
|
||||
struct expander_data *cd = bzalloc(sizeof(struct expander_data));
|
||||
cd->context = filter;
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
|
||||
cd->runave[i] = 0;
|
||||
cd->envelope[i] = 0;
|
||||
cd->gaindB_buf[i] = 0;
|
||||
}
|
||||
cd->is_gate = false;
|
||||
const char *presets = obs_data_get_string(settings, S_PRESETS);
|
||||
if (strcmp(presets, "gate") == 0)
|
||||
cd->is_gate = true;
|
||||
|
||||
expander_update(cd, settings);
|
||||
return cd;
|
||||
}
|
||||
|
||||
static void expander_destroy(void *data)
|
||||
{
|
||||
struct expander_data *cd = data;
|
||||
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
|
||||
bfree(cd->envelope_buf[i]);
|
||||
bfree(cd->runaverage[i]);
|
||||
bfree(cd->gaindB[i]);
|
||||
}
|
||||
bfree(cd->env_in);
|
||||
bfree(cd);
|
||||
}
|
||||
|
||||
// detection stage
|
||||
static void analyze_envelope(struct expander_data *cd,
|
||||
float **samples, const uint32_t num_samples)
|
||||
{
|
||||
if (cd->envelope_buf_len < num_samples)
|
||||
resize_env_buffer(cd, num_samples);
|
||||
if (cd->runaverage_len < num_samples)
|
||||
resize_runaverage_buffer(cd, num_samples);
|
||||
if (cd->env_in_len < num_samples)
|
||||
resize_env_in_buffer(cd, num_samples);
|
||||
|
||||
// 10 ms RMS window
|
||||
const float rmscoef = exp2f(-100.0f / cd->sample_rate);
|
||||
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
|
||||
memset(cd->envelope_buf[i], 0,
|
||||
num_samples * sizeof(cd->envelope_buf[i][0]));
|
||||
memset(cd->runaverage[i], 0,
|
||||
num_samples * sizeof(cd->runaverage[i][0]));
|
||||
}
|
||||
memset(cd->env_in, 0, num_samples * sizeof(cd->env_in[0]));
|
||||
|
||||
for (size_t chan = 0; chan < cd->num_channels; ++chan) {
|
||||
if (!samples[chan])
|
||||
continue;
|
||||
|
||||
float *envelope_buf = cd->envelope_buf[chan];
|
||||
float *runave = cd->runaverage[chan];
|
||||
float *env_in = cd->env_in;
|
||||
|
||||
if (cd->detector == RMS_DETECT) {
|
||||
runave[0] = rmscoef * cd->runave[chan] +
|
||||
(1 - rmscoef) * powf(samples[chan][0], 2.0f);
|
||||
env_in[0] = sqrtf(fmaxf(runave[0], 0));
|
||||
for (uint32_t i = 1; i < num_samples; ++i) {
|
||||
runave[i] = rmscoef * runave[i - 1] +
|
||||
(1 - rmscoef) *
|
||||
powf(samples[chan][i], 2.0f);
|
||||
env_in[i] = sqrtf(runave[i]);
|
||||
}
|
||||
} else if (cd->detector == PEAK_DETECT) {
|
||||
for (uint32_t i = 0; i < num_samples; ++i) {
|
||||
runave[i] = powf(samples[chan][i], 2);
|
||||
env_in[i] = fabsf(samples[chan][i]);
|
||||
}
|
||||
}
|
||||
|
||||
cd->runave[chan] = runave[num_samples-1];
|
||||
for (uint32_t i = 0; i < num_samples; ++i)
|
||||
envelope_buf[i] = fmaxf(envelope_buf[i], env_in[i]);
|
||||
cd->envelope[chan] = cd->envelope_buf[chan][num_samples - 1];
|
||||
}
|
||||
}
|
||||
|
||||
// gain stage and ballistics in dB domain
|
||||
static inline void process_expansion(struct expander_data *cd,
|
||||
float **samples, uint32_t num_samples)
|
||||
{
|
||||
const float attack_gain = cd->attack_gain;
|
||||
const float release_gain = cd->release_gain;
|
||||
|
||||
if (cd->gaindB_len < num_samples)
|
||||
resize_gaindB_buffer(cd, num_samples);
|
||||
for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
|
||||
memset(cd->gaindB[i], 0, num_samples * sizeof(cd->gaindB[i][0]));
|
||||
|
||||
for (size_t chan = 0; chan < cd->num_channels; chan++) {
|
||||
for (size_t i = 0; i < num_samples; ++i) {
|
||||
// gain stage of expansion
|
||||
float env_db = mul_to_db(cd->envelope_buf[chan][i]);
|
||||
float gain = cd->threshold - env_db > 0.0f ?
|
||||
fmaxf(cd->slope *
|
||||
(cd->threshold - env_db), -60.0f) :
|
||||
0.0f;
|
||||
// ballistics (attack/release)
|
||||
if (i > 0) {
|
||||
if (gain > cd->gaindB[chan][i - 1])
|
||||
cd->gaindB[chan][i] = attack_gain *
|
||||
cd->gaindB[chan][i - 1] +
|
||||
(1.0f - attack_gain) * gain;
|
||||
else
|
||||
cd->gaindB[chan][i] = release_gain *
|
||||
cd->gaindB[chan][i - 1] +
|
||||
(1.0f - release_gain) * gain;
|
||||
} else {
|
||||
if (gain > cd->gaindB_buf[chan])
|
||||
cd->gaindB[chan][i] = attack_gain *
|
||||
cd->gaindB_buf[chan] +
|
||||
(1.0f - attack_gain) * gain;
|
||||
else
|
||||
cd->gaindB[chan][i] = release_gain *
|
||||
cd->gaindB_buf[chan] +
|
||||
(1.0f - release_gain) * gain;
|
||||
}
|
||||
|
||||
gain = db_to_mul(fminf(0, cd->gaindB[chan][i]));
|
||||
if (samples[chan])
|
||||
samples[chan][i] *= gain * cd->output_gain;
|
||||
}
|
||||
cd->gaindB_buf[chan] = cd->gaindB[chan][num_samples - 1];
|
||||
}
|
||||
}
|
||||
|
||||
static struct obs_audio_data *expander_filter_audio(void *data,
|
||||
struct obs_audio_data *audio)
|
||||
{
|
||||
struct expander_data *cd = data;
|
||||
|
||||
const uint32_t num_samples = audio->frames;
|
||||
if (num_samples == 0)
|
||||
return audio;
|
||||
|
||||
float **samples = (float**)audio->data;
|
||||
|
||||
analyze_envelope(cd, samples, num_samples);
|
||||
process_expansion(cd, samples, num_samples);
|
||||
return audio;
|
||||
}
|
||||
|
||||
static bool presets_changed(obs_properties_t *props, obs_property_t *prop,
|
||||
obs_data_t *settings)
|
||||
{
|
||||
UNUSED_PARAMETER(props);
|
||||
UNUSED_PARAMETER(prop);
|
||||
UNUSED_PARAMETER(settings);
|
||||
return true;
|
||||
}
|
||||
|
||||
static obs_properties_t *expander_properties(void *data)
|
||||
{
|
||||
obs_properties_t *props = obs_properties_create();
|
||||
|
||||
obs_property_t *presets = obs_properties_add_list(props, S_PRESETS,
|
||||
TEXT_PRESETS, OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_list_add_string(presets, TEXT_PRESETS_EXP, "expander");
|
||||
obs_property_list_add_string(presets, TEXT_PRESETS_GATE, "gate");
|
||||
obs_property_set_modified_callback(presets, presets_changed);
|
||||
obs_properties_add_float_slider(props, S_RATIO,
|
||||
TEXT_RATIO, MIN_RATIO, MAX_RATIO, 0.1);
|
||||
obs_properties_add_float_slider(props, S_THRESHOLD,
|
||||
TEXT_THRESHOLD, MIN_THRESHOLD_DB, MAX_THRESHOLD_DB,
|
||||
0.1);
|
||||
obs_properties_add_int_slider(props, S_ATTACK_TIME,
|
||||
TEXT_ATTACK_TIME, MIN_ATK_RLS_MS, MAX_ATK_MS, 1);
|
||||
obs_properties_add_int_slider(props, S_RELEASE_TIME,
|
||||
TEXT_RELEASE_TIME, MIN_ATK_RLS_MS, MAX_RLS_MS, 1);
|
||||
obs_properties_add_float_slider(props, S_OUTPUT_GAIN,
|
||||
TEXT_OUTPUT_GAIN, MIN_OUTPUT_GAIN_DB,
|
||||
MAX_OUTPUT_GAIN_DB, 0.1);
|
||||
obs_property_t *detect = obs_properties_add_list(props, S_DETECTOR,
|
||||
TEXT_DETECTOR, OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_list_add_string(detect, TEXT_RMS, "RMS");
|
||||
obs_property_list_add_string(detect, TEXT_PEAK, "peak");
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return props;
|
||||
}
|
||||
|
||||
struct obs_source_info expander_filter = {
|
||||
.id = "expander_filter",
|
||||
.type = OBS_SOURCE_TYPE_FILTER,
|
||||
.output_flags = OBS_SOURCE_AUDIO,
|
||||
.get_name = expander_name,
|
||||
.create = expander_create,
|
||||
.destroy = expander_destroy,
|
||||
.update = expander_update,
|
||||
.filter_audio = expander_filter_audio,
|
||||
.get_defaults = expander_defaults,
|
||||
.get_properties = expander_properties,
|
||||
};
|
||||
49
plugins/obs-filters/invert-audio-polarity.c
Normal file
49
plugins/obs-filters/invert-audio-polarity.c
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#include <obs-module.h>
|
||||
|
||||
static const char *invert_polarity_name(void *unused)
|
||||
{
|
||||
UNUSED_PARAMETER(unused);
|
||||
return obs_module_text("InvertPolarity");
|
||||
}
|
||||
|
||||
static void invert_polarity_destroy(void *data)
|
||||
{
|
||||
UNUSED_PARAMETER(data);
|
||||
}
|
||||
|
||||
static void *invert_polarity_create(obs_data_t *settings, obs_source_t *filter)
|
||||
{
|
||||
UNUSED_PARAMETER(settings);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static struct obs_audio_data *invert_polarity_filter_audio(void *unused,
|
||||
struct obs_audio_data *audio)
|
||||
{
|
||||
float **adata = (float**)audio->data;
|
||||
|
||||
for (size_t c = 0; c < MAX_AV_PLANES; c++) {
|
||||
register float *channel_data = adata[c];
|
||||
register float *channel_end = channel_data + audio->frames;
|
||||
|
||||
if (!channel_data)
|
||||
break;
|
||||
|
||||
while (channel_data < channel_end) {
|
||||
*(channel_data++) *= -1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
UNUSED_PARAMETER(unused);
|
||||
return audio;
|
||||
}
|
||||
|
||||
struct obs_source_info invert_polarity_filter = {
|
||||
.id = "invert_polarity_filter",
|
||||
.type = OBS_SOURCE_TYPE_FILTER,
|
||||
.output_flags = OBS_SOURCE_AUDIO,
|
||||
.get_name = invert_polarity_name,
|
||||
.create = invert_polarity_create,
|
||||
.destroy = invert_polarity_destroy,
|
||||
.filter_audio = invert_polarity_filter_audio,
|
||||
};
|
||||
215
plugins/obs-filters/limiter-filter.c
Normal file
215
plugins/obs-filters/limiter-filter.c
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
#include <stdint.h>
|
||||
#include <inttypes.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <obs-module.h>
|
||||
#include <media-io/audio-math.h>
|
||||
#include <util/platform.h>
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
#define do_log(level, format, ...) \
|
||||
blog(level, "[limiter: '%s'] " format, \
|
||||
obs_source_get_name(cd->context), ##__VA_ARGS__)
|
||||
|
||||
#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
|
||||
#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__)
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__)
|
||||
#else
|
||||
#define debug(format, ...)
|
||||
#endif
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
#define S_THRESHOLD "threshold"
|
||||
#define S_RELEASE_TIME "release_time"
|
||||
|
||||
#define MT_ obs_module_text
|
||||
#define TEXT_THRESHOLD MT_("Limiter.Threshold")
|
||||
#define TEXT_RELEASE_TIME MT_("Limiter.ReleaseTime")
|
||||
|
||||
#define MIN_THRESHOLD_DB -60.0
|
||||
#define MAX_THRESHOLD_DB 0.0f
|
||||
#define MIN_ATK_RLS_MS 1
|
||||
#define MAX_RLS_MS 1000
|
||||
#define DEFAULT_AUDIO_BUF_MS 10
|
||||
#define ATK_TIME 0.001f
|
||||
#define MS_IN_S 1000
|
||||
#define MS_IN_S_F ((float)MS_IN_S)
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
struct limiter_data {
|
||||
obs_source_t *context;
|
||||
float *envelope_buf;
|
||||
size_t envelope_buf_len;
|
||||
|
||||
float threshold;
|
||||
float attack_gain;
|
||||
float release_gain;
|
||||
float output_gain;
|
||||
|
||||
size_t num_channels;
|
||||
size_t sample_rate;
|
||||
float envelope;
|
||||
float slope;
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
static void resize_env_buffer(struct limiter_data *cd, size_t len)
|
||||
{
|
||||
cd->envelope_buf_len = len;
|
||||
cd->envelope_buf = brealloc(cd->envelope_buf, len * sizeof(float));
|
||||
}
|
||||
|
||||
static inline float gain_coefficient(uint32_t sample_rate, float time)
|
||||
{
|
||||
return (float)exp(-1.0f / (sample_rate * time));
|
||||
}
|
||||
|
||||
static const char *limiter_name(void *unused)
|
||||
{
|
||||
UNUSED_PARAMETER(unused);
|
||||
return obs_module_text("Limiter");
|
||||
}
|
||||
|
||||
static void limiter_update(void *data, obs_data_t *s)
|
||||
{
|
||||
struct limiter_data *cd = data;
|
||||
|
||||
const uint32_t sample_rate =
|
||||
audio_output_get_sample_rate(obs_get_audio());
|
||||
const size_t num_channels =
|
||||
audio_output_get_channels(obs_get_audio());
|
||||
float attack_time_ms = ATK_TIME;
|
||||
|
||||
const float release_time_ms =
|
||||
(float)obs_data_get_int(s, S_RELEASE_TIME);
|
||||
const float output_gain_db = 0;
|
||||
|
||||
cd->threshold = (float)obs_data_get_double(s, S_THRESHOLD);
|
||||
|
||||
cd->attack_gain = gain_coefficient(sample_rate,
|
||||
attack_time_ms / MS_IN_S_F);
|
||||
cd->release_gain = gain_coefficient(sample_rate,
|
||||
release_time_ms / MS_IN_S_F);
|
||||
cd->output_gain = db_to_mul(output_gain_db);
|
||||
cd->num_channels = num_channels;
|
||||
cd->sample_rate = sample_rate;
|
||||
cd->slope = 1.0f;
|
||||
|
||||
size_t sample_len = sample_rate * DEFAULT_AUDIO_BUF_MS / MS_IN_S;
|
||||
if (cd->envelope_buf_len == 0)
|
||||
resize_env_buffer(cd, sample_len);
|
||||
}
|
||||
|
||||
static void *limiter_create(obs_data_t *settings, obs_source_t *filter)
|
||||
{
|
||||
struct limiter_data *cd = bzalloc(sizeof(struct limiter_data));
|
||||
cd->context = filter;
|
||||
|
||||
limiter_update(cd, settings);
|
||||
return cd;
|
||||
}
|
||||
|
||||
static void limiter_destroy(void *data)
|
||||
{
|
||||
struct limiter_data *cd = data;
|
||||
|
||||
bfree(cd->envelope_buf);
|
||||
bfree(cd);
|
||||
}
|
||||
|
||||
static void analyze_envelope(struct limiter_data *cd,
|
||||
float **samples, const uint32_t num_samples)
|
||||
{
|
||||
if (cd->envelope_buf_len < num_samples) {
|
||||
resize_env_buffer(cd, num_samples);
|
||||
}
|
||||
|
||||
const float attack_gain = cd->attack_gain;
|
||||
const float release_gain = cd->release_gain;
|
||||
|
||||
memset(cd->envelope_buf, 0, num_samples * sizeof(cd->envelope_buf[0]));
|
||||
for (size_t chan = 0; chan < cd->num_channels; ++chan) {
|
||||
if (!samples[chan])
|
||||
continue;
|
||||
|
||||
float *envelope_buf = cd->envelope_buf;
|
||||
float env = cd->envelope;
|
||||
for (uint32_t i = 0; i < num_samples; ++i) {
|
||||
const float env_in = fabsf(samples[chan][i]);
|
||||
if (env < env_in) {
|
||||
env = env_in + attack_gain * (env - env_in);
|
||||
} else {
|
||||
env = env_in + release_gain * (env - env_in);
|
||||
}
|
||||
envelope_buf[i] = fmaxf(envelope_buf[i], env);
|
||||
}
|
||||
}
|
||||
cd->envelope = cd->envelope_buf[num_samples - 1];
|
||||
}
|
||||
|
||||
static inline void process_compression(const struct limiter_data *cd,
|
||||
float **samples, uint32_t num_samples)
|
||||
{
|
||||
for (size_t i = 0; i < num_samples; ++i) {
|
||||
const float env_db = mul_to_db(cd->envelope_buf[i]);
|
||||
float gain = cd->slope * (cd->threshold - env_db);
|
||||
gain = db_to_mul(fminf(0, gain));
|
||||
|
||||
for (size_t c = 0; c < cd->num_channels; ++c) {
|
||||
if (samples[c]) {
|
||||
samples[c][i] *= gain * cd->output_gain;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static struct obs_audio_data *limiter_filter_audio(void *data,
|
||||
struct obs_audio_data *audio)
|
||||
{
|
||||
struct limiter_data *cd = data;
|
||||
|
||||
const uint32_t num_samples = audio->frames;
|
||||
if (num_samples == 0)
|
||||
return audio;
|
||||
|
||||
float **samples = (float**)audio->data;
|
||||
analyze_envelope(cd, samples, num_samples);
|
||||
process_compression(cd, samples, num_samples);
|
||||
return audio;
|
||||
}
|
||||
|
||||
static void limiter_defaults(obs_data_t *s)
|
||||
{
|
||||
obs_data_set_default_double(s, S_THRESHOLD, -6.0f);
|
||||
obs_data_set_default_int(s, S_RELEASE_TIME, 60);
|
||||
}
|
||||
|
||||
static obs_properties_t *limiter_properties(void *data)
|
||||
{
|
||||
obs_properties_t *props = obs_properties_create();
|
||||
|
||||
obs_properties_add_float_slider(props, S_THRESHOLD, TEXT_THRESHOLD, MIN_THRESHOLD_DB, MAX_THRESHOLD_DB, 0.1);
|
||||
obs_properties_add_int_slider(props, S_RELEASE_TIME, TEXT_RELEASE_TIME, MIN_ATK_RLS_MS, MAX_RLS_MS, 1);
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return props;
|
||||
}
|
||||
|
||||
struct obs_source_info limiter_filter = {
|
||||
.id = "limiter_filter",
|
||||
.type = OBS_SOURCE_TYPE_FILTER,
|
||||
.output_flags = OBS_SOURCE_AUDIO,
|
||||
.get_name = limiter_name,
|
||||
.create = limiter_create,
|
||||
.destroy = limiter_destroy,
|
||||
.update = limiter_update,
|
||||
.filter_audio = limiter_filter_audio,
|
||||
.get_defaults = limiter_defaults,
|
||||
.get_properties = limiter_properties,
|
||||
};
|
||||
153
plugins/obs-filters/luma-key-filter.c
Normal file
153
plugins/obs-filters/luma-key-filter.c
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
#include <obs-module.h>
|
||||
|
||||
#define SETTING_LUMA_MAX "luma_max"
|
||||
#define SETTING_LUMA_MIN "luma_min"
|
||||
#define SETTING_LUMA_MAX_SMOOTH "luma_max_smooth"
|
||||
#define SETTING_LUMA_MIN_SMOOTH "luma_min_smooth"
|
||||
|
||||
#define TEXT_LUMA_MAX obs_module_text("Luma.LumaMax")
|
||||
#define TEXT_LUMA_MIN obs_module_text("Luma.LumaMin")
|
||||
#define TEXT_LUMA_MAX_SMOOTH obs_module_text("Luma.LumaMaxSmooth")
|
||||
#define TEXT_LUMA_MIN_SMOOTH obs_module_text("Luma.LumaMinSmooth")
|
||||
|
||||
struct luma_key_filter_data {
|
||||
obs_source_t *context;
|
||||
|
||||
gs_effect_t *effect;
|
||||
|
||||
gs_eparam_t *luma_max_param;
|
||||
gs_eparam_t *luma_min_param;
|
||||
gs_eparam_t *luma_max_smooth_param;
|
||||
gs_eparam_t *luma_min_smooth_param;
|
||||
|
||||
float luma_max;
|
||||
float luma_min;
|
||||
float luma_max_smooth;
|
||||
float luma_min_smooth;
|
||||
};
|
||||
|
||||
static const char *luma_key_name(void *unused)
|
||||
{
|
||||
UNUSED_PARAMETER(unused);
|
||||
return obs_module_text("LumaKeyFilter");
|
||||
}
|
||||
|
||||
static void luma_key_update(void *data, obs_data_t *settings)
|
||||
{
|
||||
struct luma_key_filter_data *filter = data;
|
||||
|
||||
double lumaMax = obs_data_get_double(settings, SETTING_LUMA_MAX);
|
||||
double lumaMin = obs_data_get_double(settings, SETTING_LUMA_MIN);
|
||||
double lumaMaxSmooth = obs_data_get_double(settings, SETTING_LUMA_MAX_SMOOTH);
|
||||
double lumaMinSmooth = obs_data_get_double(settings, SETTING_LUMA_MIN_SMOOTH);
|
||||
|
||||
filter->luma_max = (float)lumaMax;
|
||||
filter->luma_min = (float)lumaMin;
|
||||
filter->luma_max_smooth = (float)lumaMaxSmooth;
|
||||
filter->luma_min_smooth = (float)lumaMinSmooth;
|
||||
}
|
||||
|
||||
static void luma_key_destroy(void *data)
|
||||
{
|
||||
struct luma_key_filter_data *filter = data;
|
||||
|
||||
if (filter->effect) {
|
||||
obs_enter_graphics();
|
||||
gs_effect_destroy(filter->effect);
|
||||
obs_leave_graphics();
|
||||
}
|
||||
|
||||
bfree(data);
|
||||
}
|
||||
|
||||
static void *luma_key_create(obs_data_t *settings, obs_source_t *context)
|
||||
{
|
||||
struct luma_key_filter_data *filter =
|
||||
bzalloc(sizeof(struct luma_key_filter_data));
|
||||
char *effect_path = obs_module_file("luma_key_filter.effect");
|
||||
|
||||
filter->context = context;
|
||||
|
||||
obs_enter_graphics();
|
||||
|
||||
filter->effect = gs_effect_create_from_file(effect_path, NULL);
|
||||
if (filter->effect) {
|
||||
filter->luma_max_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "lumaMax");
|
||||
filter->luma_min_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "lumaMin");
|
||||
filter->luma_max_smooth_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "lumaMaxSmooth");
|
||||
filter->luma_min_smooth_param = gs_effect_get_param_by_name(
|
||||
filter->effect, "lumaMinSmooth");
|
||||
}
|
||||
|
||||
obs_leave_graphics();
|
||||
|
||||
bfree(effect_path);
|
||||
|
||||
if (!filter->effect) {
|
||||
luma_key_destroy(filter);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
luma_key_update(filter, settings);
|
||||
return filter;
|
||||
}
|
||||
|
||||
static void luma_key_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct luma_key_filter_data *filter = data;
|
||||
|
||||
if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
|
||||
OBS_ALLOW_DIRECT_RENDERING))
|
||||
return;
|
||||
|
||||
gs_effect_set_float(filter->luma_max_param, filter->luma_max);
|
||||
gs_effect_set_float(filter->luma_min_param, filter->luma_min);
|
||||
gs_effect_set_float(filter->luma_max_smooth_param, filter->luma_max_smooth);
|
||||
gs_effect_set_float(filter->luma_min_smooth_param, filter->luma_min_smooth);
|
||||
|
||||
obs_source_process_filter_end(filter->context, filter->effect, 0, 0);
|
||||
|
||||
UNUSED_PARAMETER(effect);
|
||||
}
|
||||
|
||||
static obs_properties_t *luma_key_properties(void *data)
|
||||
{
|
||||
obs_properties_t *props = obs_properties_create();
|
||||
|
||||
obs_properties_add_float_slider(props, SETTING_LUMA_MAX,
|
||||
TEXT_LUMA_MAX, 0, 1, 0.01);
|
||||
obs_properties_add_float_slider(props, SETTING_LUMA_MAX_SMOOTH,
|
||||
TEXT_LUMA_MAX_SMOOTH, 0, 1, 0.01);
|
||||
obs_properties_add_float_slider(props, SETTING_LUMA_MIN,
|
||||
TEXT_LUMA_MIN, 0, 1, 0.01);
|
||||
obs_properties_add_float_slider(props, SETTING_LUMA_MIN_SMOOTH,
|
||||
TEXT_LUMA_MIN_SMOOTH, 0, 1, 0.01);
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return props;
|
||||
}
|
||||
|
||||
static void luma_key_defaults(obs_data_t *settings)
|
||||
{
|
||||
obs_data_set_default_double(settings, SETTING_LUMA_MAX, 1.0);
|
||||
obs_data_set_default_double(settings, SETTING_LUMA_MIN, 0.0);
|
||||
obs_data_set_default_double(settings, SETTING_LUMA_MAX_SMOOTH, 0.0);
|
||||
obs_data_set_default_double(settings, SETTING_LUMA_MIN_SMOOTH, 0.0);
|
||||
}
|
||||
|
||||
|
||||
struct obs_source_info luma_key_filter = {
|
||||
.id = "luma_key_filter",
|
||||
.type = OBS_SOURCE_TYPE_FILTER,
|
||||
.output_flags = OBS_SOURCE_VIDEO,
|
||||
.get_name = luma_key_name,
|
||||
.create = luma_key_create,
|
||||
.destroy = luma_key_destroy,
|
||||
.video_render = luma_key_render,
|
||||
.update = luma_key_update,
|
||||
.get_properties = luma_key_properties,
|
||||
.get_defaults = luma_key_defaults
|
||||
};
|
||||
|
|
@ -46,6 +46,7 @@ static void mask_filter_update(void *data, obs_data_t *settings)
|
|||
int opacity = (int)obs_data_get_int(settings, SETTING_OPACITY);
|
||||
char *effect_path;
|
||||
|
||||
color &= 0xFFFFFF;
|
||||
color |= (uint32_t)(((double)opacity) * 2.55) << 24;
|
||||
|
||||
vec4_from_rgba(&filter->color, color);
|
||||
|
|
@ -115,7 +116,8 @@ static obs_properties_t *mask_filter_properties(void *data)
|
|||
obs_properties_add_path(props, SETTING_IMAGE_PATH, TEXT_IMAGE_PATH,
|
||||
OBS_PATH_FILE, filter_str.array, NULL);
|
||||
obs_properties_add_color(props, SETTING_COLOR, TEXT_COLOR);
|
||||
obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
|
||||
obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
|
||||
0, 100, 1);
|
||||
obs_properties_add_bool(props, SETTING_STRETCH, TEXT_STRETCH);
|
||||
|
||||
dstr_free(&filter_str);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@
|
|||
#include "obs-filters-config.h"
|
||||
|
||||
OBS_DECLARE_MODULE()
|
||||
|
||||
OBS_MODULE_USE_DEFAULT_LOCALE("obs-filters", "en-US")
|
||||
MODULE_EXPORT const char *obs_module_description(void)
|
||||
{
|
||||
return "OBS core filters";
|
||||
}
|
||||
|
||||
extern struct obs_source_info mask_filter;
|
||||
extern struct obs_source_info crop_filter;
|
||||
|
|
@ -20,8 +23,12 @@ extern struct obs_source_info async_delay_filter;
|
|||
#if SPEEXDSP_ENABLED
|
||||
extern struct obs_source_info noise_suppress_filter;
|
||||
#endif
|
||||
extern struct obs_source_info invert_polarity_filter;
|
||||
extern struct obs_source_info noise_gate_filter;
|
||||
extern struct obs_source_info compressor_filter;
|
||||
extern struct obs_source_info limiter_filter;
|
||||
extern struct obs_source_info expander_filter;
|
||||
extern struct obs_source_info luma_key_filter;
|
||||
|
||||
bool obs_module_load(void)
|
||||
{
|
||||
|
|
@ -40,7 +47,11 @@ bool obs_module_load(void)
|
|||
#if SPEEXDSP_ENABLED
|
||||
obs_register_source(&noise_suppress_filter);
|
||||
#endif
|
||||
obs_register_source(&invert_polarity_filter);
|
||||
obs_register_source(&noise_gate_filter);
|
||||
obs_register_source(&compressor_filter);
|
||||
obs_register_source(&limiter_filter);
|
||||
obs_register_source(&expander_filter);
|
||||
obs_register_source(&luma_key_filter);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,15 @@
|
|||
#define T_SAMPLING_BILINEAR obs_module_text("ScaleFiltering.Bilinear")
|
||||
#define T_SAMPLING_BICUBIC obs_module_text("ScaleFiltering.Bicubic")
|
||||
#define T_SAMPLING_LANCZOS obs_module_text("ScaleFiltering.Lanczos")
|
||||
#define T_SAMPLING_AREA obs_module_text("ScaleFiltering.Area")
|
||||
#define T_UNDISTORT obs_module_text("UndistortCenter")
|
||||
#define T_BASE obs_module_text("Base.Canvas")
|
||||
|
||||
#define S_SAMPLING_POINT "point"
|
||||
#define S_SAMPLING_BILINEAR "bilinear"
|
||||
#define S_SAMPLING_BICUBIC "bicubic"
|
||||
#define S_SAMPLING_LANCZOS "lanczos"
|
||||
#define S_SAMPLING_AREA "area"
|
||||
|
||||
struct scale_filter_data {
|
||||
obs_source_t *context;
|
||||
|
|
@ -42,6 +45,7 @@ struct scale_filter_data {
|
|||
bool target_valid;
|
||||
bool valid;
|
||||
bool undistort;
|
||||
bool base_canvas_resolution;
|
||||
};
|
||||
|
||||
static const char *scale_filter_name(void *unused)
|
||||
|
|
@ -59,18 +63,29 @@ static void scale_filter_update(void *data, obs_data_t *settings)
|
|||
const char *sampling = obs_data_get_string(settings, S_SAMPLING);
|
||||
|
||||
filter->valid = true;
|
||||
filter->base_canvas_resolution = false;
|
||||
|
||||
ret = sscanf(res_str, "%dx%d", &filter->cx_in, &filter->cy_in);
|
||||
if (ret == 2) {
|
||||
if (strcmp(res_str, T_BASE) == 0) {
|
||||
struct obs_video_info ovi;
|
||||
obs_get_video_info(&ovi);
|
||||
filter->aspect_ratio_only = false;
|
||||
filter->base_canvas_resolution = true;
|
||||
filter->cx_in = ovi.base_width;
|
||||
filter->cy_in = ovi.base_height;
|
||||
} else {
|
||||
ret = sscanf(res_str, "%d:%d", &filter->cx_in, &filter->cy_in);
|
||||
if (ret != 2) {
|
||||
filter->valid = false;
|
||||
return;
|
||||
}
|
||||
ret = sscanf(res_str, "%dx%d", &filter->cx_in, &filter->cy_in);
|
||||
if (ret == 2) {
|
||||
filter->aspect_ratio_only = false;
|
||||
} else {
|
||||
ret = sscanf(res_str, "%d:%d", &filter->cx_in,
|
||||
&filter->cy_in);
|
||||
if (ret != 2) {
|
||||
filter->valid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
filter->aspect_ratio_only = true;
|
||||
filter->aspect_ratio_only = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (astrcmpi(sampling, S_SAMPLING_POINT) == 0) {
|
||||
|
|
@ -82,6 +97,9 @@ static void scale_filter_update(void *data, obs_data_t *settings)
|
|||
} else if (astrcmpi(sampling, S_SAMPLING_LANCZOS) == 0) {
|
||||
filter->sampling = OBS_SCALE_LANCZOS;
|
||||
|
||||
} else if (astrcmpi(sampling, S_SAMPLING_AREA) == 0) {
|
||||
filter->sampling = OBS_SCALE_AREA;
|
||||
|
||||
} else { /* S_SAMPLING_BICUBIC */
|
||||
filter->sampling = OBS_SCALE_BICUBIC;
|
||||
}
|
||||
|
|
@ -126,6 +144,13 @@ static void scale_filter_tick(void *data, float seconds)
|
|||
int cx;
|
||||
int cy;
|
||||
|
||||
if (filter->base_canvas_resolution) {
|
||||
struct obs_video_info ovi;
|
||||
obs_get_video_info(&ovi);
|
||||
filter->cx_in = ovi.base_width;
|
||||
filter->cy_in = ovi.base_height;
|
||||
}
|
||||
|
||||
target = obs_filter_get_target(filter->context);
|
||||
filter->cx_out = 0;
|
||||
filter->cy_out = 0;
|
||||
|
|
@ -198,6 +223,7 @@ static void scale_filter_tick(void *data, float seconds)
|
|||
case OBS_SCALE_BILINEAR: type = OBS_EFFECT_DEFAULT; break;
|
||||
case OBS_SCALE_BICUBIC: type = OBS_EFFECT_BICUBIC; break;
|
||||
case OBS_SCALE_LANCZOS: type = OBS_EFFECT_LANCZOS; break;
|
||||
case OBS_SCALE_AREA: type = OBS_EFFECT_AREA; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -289,15 +315,15 @@ static bool sampling_modified(obs_properties_t *props, obs_property_t *p,
|
|||
bool has_undistort;
|
||||
if (astrcmpi(sampling, S_SAMPLING_POINT) == 0) {
|
||||
has_undistort = false;
|
||||
|
||||
}
|
||||
else if (astrcmpi(sampling, S_SAMPLING_BILINEAR) == 0) {
|
||||
has_undistort = false;
|
||||
|
||||
}
|
||||
else if (astrcmpi(sampling, S_SAMPLING_LANCZOS) == 0) {
|
||||
has_undistort = true;
|
||||
|
||||
}
|
||||
else if (astrcmpi(sampling, S_SAMPLING_AREA) == 0) {
|
||||
has_undistort = false;
|
||||
}
|
||||
else { /* S_SAMPLING_BICUBIC */
|
||||
has_undistort = true;
|
||||
|
|
@ -340,6 +366,7 @@ static obs_properties_t *scale_filter_properties(void *data)
|
|||
obs_property_list_add_string(p, T_SAMPLING_BILINEAR, S_SAMPLING_BILINEAR);
|
||||
obs_property_list_add_string(p, T_SAMPLING_BICUBIC, S_SAMPLING_BICUBIC);
|
||||
obs_property_list_add_string(p, T_SAMPLING_LANCZOS, S_SAMPLING_LANCZOS);
|
||||
obs_property_list_add_string(p, T_SAMPLING_AREA, S_SAMPLING_AREA);
|
||||
|
||||
/* ----------------- */
|
||||
|
||||
|
|
@ -347,6 +374,7 @@ static obs_properties_t *scale_filter_properties(void *data)
|
|||
OBS_COMBO_TYPE_EDITABLE, OBS_COMBO_FORMAT_STRING);
|
||||
|
||||
obs_property_list_add_string(p, T_NONE, T_NONE);
|
||||
obs_property_list_add_string(p, T_BASE, T_BASE);
|
||||
|
||||
for (size_t i = 0; i < NUM_ASPECTS; i++)
|
||||
obs_property_list_add_string(p, aspects[i], aspects[i]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue