RawSource

Přehled

autor: Ernst Peché
verze: 20060728
dowload: http://www.avisynth.org/warpenterprises/
kategorie: Různé pluginy
požadavky:
licence:
GPL

Co to dělá

Tento filtr načítá raw (syrová) video data.

Použití

RawSource (string "file", int "widht", int "height", string "pixel_type", string "index", bool "show")

RawSource otvírá video soubory, které obsahují YUV2, YV16, YV12, RGB nebo Y8 video data.
Existují tři způsoby jak jsou pozice dat video snímků počítány:

Podporované pixel_type jsou:
  RGB, RGBA, BGR, BGRA (interleaved RGB bez podvzorkování, což vede k formátům AviSynthu RGB24 nebo RGB32)
  YUYV, YVYU, UYVY, VYUY (interleaved horizontálně podvzorkované což vede k formátu AviSynthu YUV2)
  YV16 (planární horizontálně podvzorkovaný, je převeden do AviSynth formátu YUV2)
  I420, YV12 (planární horizontálně a vertikálně podvzorkované což vede k formátu AviSynthu YV12)
  Y8 (jen jas což vede k formátu AviSynthu YV12 grey, čeká na Avisynth 2.6 s nativní podporou Y8)

Maximální šířka width je 2880.
Frekvence snímků je pevná 25fps, Můžete ji změnit pomocí AssumeFPS, pokud potřebujete (např. pro NTSC-materiál).

Při show=true se zobrazí skutečně použitá bajtová pozice pro zobrazený snímek, následovaná:
 K = použita je pozice daná v indexu
 D = použita je pozice přidáním aktuálního delta
 B = použita je pozice přidáním aktuálního big_delta

Několik jednoduchých příkladů:

RawSource("d:\yuv4mpeg.yuv")  #toto předpokládá, že je uvnitř platná YUV4MPEG2-hlavička.
                              #Pokud ne, použijí se výchozí hodnoty: width=720, height=576, pixel_type="YUV2"

RawSource("d:\src6_625.raw",720,576,"BGRA") # skutečný raw (syrový) soubor
# pokud si nejste jisti s pixel_type, jednoduše zkuste všechny možné hodnoty.

Použití řetězce index:

Můžete zadat bajtovou pozici video snímků přímo.

RawSource("d:\yuv.mov",720,576,"UYVY", index="0:192512 1:1021952 25:21120512 50:42048512 75:62976512")

Toto je užitečné pokud to není skutečné raw video, ale např. nekomprimované MOV soubory nebo soubor s nějakým druhem hlavičky.
Bude to pracovat kdykoli jsou vzdálenosti mezi snímky pevné nebo mají alespoň dva pevné intervaly (např. audio data prolínaná (prokládaná) s videem každý 25tý snímek).
Zadáváte páry framenumber:byteposition.
Vnitřně jsou dva kroky hodnot (pro bajtové pozice): delta a big_delta.
delta je uloženo vždy, když jsou dána čísla dvou sousedních snímků, výchozí hodnotou je width*height*bytes_per_pixel.
big_delta je uloženo vždy, když jsou dány tři čísla snímků stejných dvou intervalů. Výchozí hodnota je 0 (to znamená, že není přítomno žádné užitečné big_delta )..
Pokud tyto podmínky nejsou splněny, vnitřní hodnoty delta a big_delta nejsou aktualizovány, je použita jen daná bajtová pozice v indexu.
big_delta je resetováno na 0 jestliže výsledná pozice by byla za danou (viz níže).

Zde je několik možných případů:

  0:    0
snímek 0 začíná na bajtu 0, krok na snímek 1 je výchozí = width*height*bytes_per_pixel
  0:10000
snímek 0 začíná na 10000
  0: 5000
  1:15000
snímek 0 na 5000
snímek 1 na 15000 (delta je nastaveno na 10000)
snímek 2 na 25000 (použití delta)
snímek 3 na 35000 (použití delta)
  0:  5000
  1: 15000



25:290000 50:590000 75:890000
snímek 0 na 5000
snímek 1 na 15000 (delta=10000)
snímek 2 na 25000
...
snímek 25 na 290000 (použití hodnoty (entry) místo delta, které by bylo na 255000)
snímek 26 na 300000 (stálé použití delta)
...
snímek 50 na 590000 (použití hodnoty (entry) místo delta)
>> protože 25...50 = 50...75 nyní je big_delta nastaveno na 300000 (590000-290000)
snímek 51 na 600000 (stálé použití delta)
...
snímek 75 na 890000 (použití hodnoty (entry), která je stejná jako použití big_delta)
...
snímek 100 na 1190000 (použití big_delta)
snímek 101 na 1200000 (použití delta)
...
snímek 125 na 1490000 (použití big_delta)
  0:  5000
  1: 15000
 25:290000
 50:590000
 75:890000
100:950000
stejné jako v předchozím příkladu



snímek 75 na 890000
>> protože 890000+300000 > 950000 nyní je big_delta resetováno na 0.
snímek 100 na 950000
snímek 101 na 960000 (použití delta)
...
snímek 125 na 1200000 (není ŽÁDNÉ big_delta)

Řetězec index je zpracován jako jméno souboru, pokud je uvnitř "." . Data jsou pak čtena z tohoto souboru, zalomení řádků nevadí.

Nalezení těchto bajtových pozicí:

Pomocí yuvscan.exe můžete zkusit analyzovat soubory, které obsahují YUV-data s jen platnými jasovými (luma) a barevnostními (chroma) daty (~16-240).
Program hledá velké nepřerušené bloky bez bajtů < 16 nebo >240 a generuje soubor "index.txt", který může být použit přímo s rawsource (pokud máte opravdu štěstí, přinejmenším).
Je to jen verze příkazového řádku, můžete změnit výchozí parametry. Pokud znáte výšku a šířku dat, výstup bude mnohem lepší.

Použití:
yuvscan.exe filename triggerlength threshold round_by_bytes

triggerlength: jak dlouhý musí být jeden snímek (v bajtech)
threshold: co je považováno za platná YUV data (výchozí 10, což znamená 10 ... 255-10)
round_by_bytes: protože většina dat je uložena v pěkných pozicích, výstup může být zaokrouhlen. výchozí 9 což znamená 2^9 = $100

 

Ernst Peché, 2005-10-13

Verze 2006-07-28 - Přidána Y8 podpora (by Fizick, http://avisynth.org.ru)

Český překlad:17.2.2009