### [yuy2][rgb32]

# Layer

## Layer(base_clip, overlay_clip, string "op", int "level", int "x", int "y", int "threshold", bool "use_chroma")

base_clip: klip podstawowy, który określa wszystkie własności wynikowego klipu video
overlay_clip: klip, który jest nakładany na klip podany jako argument base_clip
op: określa metodę nakładania: "add", "subtract", "brighten", "darken", "fast", "mul", "lighten"
x, y: miejsce, w którym ma zostać nałożony klip (domyślnie obie wartości przyjmują wartość 0)
level: siła scalania (0-255), a dokładniej widoczność klipu overlay_clip na klipie base_clip (domyślnie - 255, gdy klip overlay_clip będzie miał rozdzielczość większą lub równą klipu base_clip to po prostu klip base_clip będzie niewidoczny)

threshold: granica nakładania, argument ten określa się tylko w przypadku metod: "lighten", "darken"
use_chroma: gdy przyjmie wartość true (domyślnie) to zostaną wykorzystane również kanały chromy klipu overlay_clip, natomiast false - tylko kanały lumy

Filtr ten potrafi nałożyć na siebie dwa klipy o różnej wielkości, ale z taką samą przestrzenią kolorów. Do tej operacji wykorzystywane są różne metody. Jest też kilka różnic w zachowaniu się danej metody i przeznaczonych argumentów zależnie od przestrzeni kolorów i metody:

- W przestrzeni kolorów YUY2 nie ma maski (kanału alpha), więc zakłada się, że kanał alpha jest wszędzie nieprzezroczysty

- W przestrzeni kolorów RGB32 kanał alpha klipu overlay_clip jest mnożony z wartością argumentu level, więc w rezultacie alpha = (alpha_mask * level) / 256. Sposób ten przy maksmyalnej wartośći dla alphy i argumentu level będzie zwracał wartość 255

- metody dla przestrzeni kolorów RGB32 i YUY2
"fast" - wymaga wartości true dla argumentu use_chroma, natomiast argumenty level i threshold są omijane. W rezultacie obydwa klipy są widoczne z tym samym nasileniem.
"add" - jedynie argument threshold jest omijany, a klip wynikowy zależy od wartości kanału alphy:
alpha=0 -> tylko widoczny base_clip
alpha=128 -> base_clip i overlay_clip są wyświetlane z tym samym nasileniem
alpha=255 -> tylko widoczny overlay_clip
"subtract": działa identycznie jak "add”, z tym wyjątkiem, że overlay_clip ma odwrócone kolory
- metody dla przestrzeni kolorów YUY2
"mul": jedynie argument threshold jest omijany. W wyniku działanie tej metody base_clip jest farbowany jak overlay_clip, tak więc argument use_chroma powinien przyjąć wartość true
alpha=0 -> tylko widoczny base_clip, bez różnicy jaką rozdzielczość ma overlay_clip
alpha=255 -> w przybliżeniu to samo nasilenie obydwu klipów, z zachowaniem kolorów z overlay_clip

"lighten": wymaga wartości true dla argumentu use_chroma. Rezultat jest prawie identyczny jak w przypadku metody "add", prawie, ponieważ jest jaśniejszy. Jednakże w przypadku wysokich wartości dla argumentu threshold klip wynikowy może być jeszcze bardziej podobny do tego z metodą "add". (threshold=255 -> ten sam rezultat, jaki jest przy użyciu metody "add")

"darken": działa identycznie jak "lighten", z tym wyjątkiem, że klip wynikowy będzie ciemniejszy, a nie jaśniejszy
By sprawdzić właściwości powstałego klipu kliknij tutaj.

### [rgb32]

# Mask

## Mask(clip, mask_clip)

Nakłada określoną maskę alpha na clip, przez przekształcenie mask_clip'u do obrazu czarno-białego i wykorzystanie tego dla maski (kanał alpha) RGB32. W kanale tym, "czarny" oznacza zupełną przezroczystość, "biały" - nieprzezroczystość.

### [rgb32]

# ResetMask

## ResetMask(clip)

Nakłada maskę alpha na clip, która sprawia, że kanał alpha jest wszędzie nieprzezroczysty. Filtr ten jest szybszym sposobem, do nałożenia samych "białych" masek: clip=ResetMask(clip)

### [rgb32]

# ColorKeyMask

## ColorKeyMask(clip, int color, int tolerance)

Ustala kanał alpha (podobne działanie do filtra Mask) poprzez porównanie kolorów. Każdy piksel z inną wartością niż color i mniejszy od wartości tolerance jest określany jako przezroczysty, a pozostałe pozostają bez zmiany (nie są określane jako nieprzezroczyste).

### translated by Slim