## Layer [yuy2][rgb32]

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

Questo filtro può sovrapporre 2 clips di differenti dimensioni (ma con lo stesso formato colore) usando diversi modi di operare.
PCome informazione sulla trasparenza dei pixel si usa come maschera il 4° canale colore dell'RGB32 (A- o alpha-channel).

Base_clip: è il clip di base che determina le dimensioni e tutte le altre proprietà audio/video del risultato.
Overlay_clip: il clip che viene fuso nel precedente. Questo clip può contenere un alpha layer.
op: l'operazione di merge , che può essere: "add", "subtract", "brighten", "darken", "fast", "mul"
level: 0-255, la forza dell'operazione. 0: il base_clip rimane inalterato, 255: la forza massima che si deve usare
x, y: offset dell' overlay_clip
threshold: implementato solo per "lighten" e "darken"
use_chroma: usa il chroma dell' overlay_clip, default=true. Quando vale "false" viene usato solo il luma.

Ci sono alcune differenze di comportamento e di parametri ammessi in funzione del formato colore e dell' operazione. In dettagio:

  - Nessuna maschera (alpha-channel) in YUY2, sicchè l'alpha-channel si assume sia ovunque "opaco"
  - in RGB32 l'alpha-channel dell'overlay_clip è moltiplicato per il level, , di modo che l'alpha risultante = (alpha_mask * level) / 256. Questo significa che per avere la massima potenza dell'operazione SIA alpha CHE level devono essere 255.

  Questi operatori si comportano allo stesso modo sia in RGB32 che in YUY2:

      "fast": use_chroma deve essere TRUE, level e threshold non sono usati.
          Il risultato è semplicemente la media fra base_clip e overlay_clip.
      "add":  tthreshold non è usato. La differenza fra base_clip e overlay_clip
          è moltiplicata per alpha e sommata al base_clip.
          alpha=0 -> solo il  base_clip è visibile,
          alpha=128 -> base e overlay blended allo stesso modo,alpha=255 -> solo overlay è visibile.
      "subtract": identico ad add, ma l' overlay_clip viene prima invertito.

  Questi operatori sembra lavorino correttamente solo in YUY2:

      "mul": tthreshold non è usato. Il base_clip viene colorato come overlay_clip,
          sicchè use_chroma dovrebbe essere TRUE.
          alpha=0 -> solo il base_clip è visibile,
          alpha=255 -> approx. la stessa Luminanza del Base ma con i colori di Overlay
      "lighten": use_chroma deve essere TRUE. Svolge le stesse operazioni di "add", ma i nuovi valori sono usati
      	solo quando il risultato è PIU' LUMINOSO del base_clip. L'operazione è più adatta ad un threshold più alto
      	, di modo che con threshold=255 equivale ad "add", con threshold=0 il base_clip rimane inalterato
          , in funzione delle differenze tra base_clip e overlay_clip.
      "darken":  stesso discorso di "lighten", ma eseguito solo quando il risultato è PIU' SCURO del base_clip.

  Vedere anche qui per le proprietà del clip.

  ## Mask [rgb32]

  `Mask` (clip, mask_clip)

  Applica una ben definita alpha-mask al clip, per l'uso con`Layer`, convertendo mask_clip in greyscale e usandola quindi come mask ( alpha-channel) dell' RGB32. In questo canale colore "black" significa completamente transparente, "white" significa completamente opaco).

  ## ResetMask [rgb32]

  `ResetMask` (clip)

  Applica un alpha-mask "all-opaque" al clip, per l'uso con`Layer`.

      L' alpha-channel di un clip RGB32-clip non è sempre ben definito (dipende dalla sorgente), questo filtro è il modo più rapido per applicare
      	una maschera "all white":

      clip=ResetMask(clip)

  ## ColorKeyMask [rgb32]

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

  Imposta l'alpha-channel (in modo simile a quanto fà Mask) ma lo genera confrontando il color. Ogni pixel con un colore che differisce meno della tolleranza è impostato a "transparent", altrimenti non viene toccato (NON è che viene impostato ad "opaco").

  `$Date: 2004/09/29 21:58:56 $`