DEMO

 

Mivel gondolom mindenkinek elege van már a sok szar számításból, foglalkozzunk valami olyannal, aminek ugyan semmi köze a demózáshoz, de legalább hasznos lehet. Legalábbis szerintem, Akkó:

FLI lejátszás

 

Hát nem egy izgalmas téma, de majd azzá tesszük. Mondjuk azzal, hogy a kód 32 bites protected módú, ezért aztán senki ne próbálja meg Borland C-vel fordítani. Watcom-mal sikeresebb. A program nem azért lett protected mer’én ilyen menô csávó vagyok, hanem mert így bizonyos dolgok lényegesen egyszerûbbek. (pl.: több megás FLI file-okat is úgy be tudunk olvasni, mint a szél.) Ennyit errôl. Tehát FLI:

 

A FLI állományok jellemzôi, hogy bonyolultan szerkesztettek, de a mögöttük álló ötlet meglehetôsen egyszerû: ne tárold a kép (frame) azon részeit, amelyek megegyeznek az utolsó képkockával. Ez nem csak helyet, de idôt is megtakarít. Gyorsabb egy pixelt békén hagyni, mint egy újat megjeleníteni a helyén.

 

A FLI file-nak egy 128-byte-os fejléc (header) van az elején, amit a képkockák (fame-ek) szekvenciája követ. Az elsô képkocka byte-alapú futás-idejû tömörítéssel van tárolva (byte run). A további képkockákban csak az elôzô képkockától való különbségek vannak tárolva. (Esetenként az elsô és/vagy a késôbbi kockák nincsenek sûrítve.) A FLI végén van egy extra frame, amely az elsô kocka különbségeit tartalmazza az utolsóhoz képest.

 

FLI fejléc:

 

Offs;byte

méret

név

jelentés

0

4

size

A file hossza, olyan programok számára, amelyek az egész FLI-t egyszerre / (méret) akarják beolvasni, ha lehet.(pl. nekünk)

4

2

magic

Az értéke mindig AF11 (hex), ha szabványos fli-rôl van szó. Más értéket kell adni neki, ha változtatsz a formátumon (még más felbontásnál is), így az Autodesk Animator nem fog meg próbálkozni az olvasásával.

6

2

frames

A FLI-ben lévõ képkockák száma. A FLI file-ok maximális hossza 4000 (képkockák) képkocka.

8

2

width

Képernyõ-szélesség (320). (szélesség)

10

2

height

Képernyõ-magasság (200). (magasság)

12

2

\flags

Nulla

14

2

/(kapcsoló)

Nulla.

16

2

speed

Képek közötti videójelek száma. (sebesség) (video ticks)

18

4

next

Nulla

22

4

frit

Nulla

26

102

expand

Mind nulla -- jövõbeli felhasználásra (kiterjesztett funkciók).

 

Ezután jönnek a képkockák, mindegyik saját fejléccel:

 

Offs;byte

méret

név

jelentés

0

4

size

A byte-ok száma ebben a kockában. Az Autodesk Animator 64K-nál (méret) kevesebbet igényel

4

2

magic

Mindig F1FA (hex). (azonosító)

6

2

chunks

A 'tömbök' száma ebben a képkockában. (tömbök)

8

8

expand

Mind nulla. Jövõbeni felhasználásra.

 

 

A képkocka fejléce után következnek egymás után a kockát felépítõ tömbök.

 

Magának a tömbnek van egy fejléce, amit az adatok követnek. A tömb fejléce a következõ:

 

Offs;byte

méret

név

jelentés

0

4

size

Byte-ok száma ebben a tömbben. (méret)

4

2

type

A tömb típusa (lásd késõbb). (típus)

 

Jelenleg 5 fajta tömbtípus található a FLI file-okban:

 

azonosító

név

jelentés

11

FLI_COLOR

Tömörített színtérkép

12

FLI_LC

Sor-tömörített(delta tömörítés) -- a legjellemzôbb tömörítési mód bármely képkockára (Leír ja az elôzô kockához viszonyított pixelkülönbségeket.

13

FLI_BLACK

Az egész képernyõt a 0.színre állítja be (Csak az elsõ kockánál használatos)

15

FLI_BRUN

Byte-alapú futásidejû tömörítés -- csak az elsô képkockánál

16

FLI_COPY

Tömörítetlen 64000 byte érkeztét jelzi.

 

A tömörítési módszerek mind byte-orientáltak. Ha a tömörített adat páratlan hosszúságnál végzõdik, egy egyszerû lezáró byte van beszúrva, így az FLI_COPY mindig páros címen kezdôdhet. (Ez gyorsítja DMA-t). Persze ezzel nekünk lejátszásnál nem kell törôdnünk, mert ez benne van a méretben.

 

 

FLI_COLOR Tömbök

 

Az elsõ 2 byte (word) a csomagok száma e tömbön belül. Ezt közvetlenül a csomagok követik. A csomag elsõ byte-ja megmondja, hogy hány színt kell átugrani. A második byte megmondja, hány színt kell kicserélni. Ha ez a byte nulla, az 256-ot jelent. Utána minden cserélendô szín következik 3 byte-osával (egy-egy a vörösre, zöldre, kékre).

 

 

FLI_LC Tömbök

 

Ez a legáltalánosabb, és legbonyolultabb tömb. Az elsô word(2 byte) a sorok azon számát jelzi a képernyõ tetejétõl kezdve, amelyek megegyeznek az elözô képkockán lévôkkel. (Például, ha csak a képernyô legalsó sorában van mozgás, itt 199 lesz.) A következô szó a megváltoztatandó sorok száma. Ezután következnek magának a sornak az adatai. Minden sor külön van tömörítve; egyéb dolgok mellett ez könnyíti meg az FLI lejátszását kisebb méret mellett.

 

A tömörített sor elsõ byte-ja a sorban lévõ csomagok számát jelzi. Ha a sor nem változik az utolsó kocka óta, akkor ez az érték zéró. Ezután jönnek a csomagok. Egy egyéni csomag formátuma a következõ:

 

nem_változtatott_számláló

méret_számláló

adat

 

A nem_változtatott számláló egyetlen byte. A méret_számláló szintén egy byte. Ha pozitív, akkor ennyi adatbyte követi, amelyek egyenesen a képernyõre másolandóak. Ha negatív, egyetlen byte követi, amelyet -méret_számláló alkalommal kell kitenni szép sorjában a képernyôre.

 

A legrosszabb esetben egy FLI_LC képkocka 70K körül lehet. Ha 60000 byte, vagy annál több jön ki, akkor az Autodesk Animator inkább nem alkalmaz tömörítést és a képkockát FLI_COPY-ként menti el.

 

 

FLI_BLACK Tömbök

 

Ezek nagyon egyszerûek. Egyáltalán nincs adat hozzájuk kapcsolva. Tulajdonképpen az Autodesk Animator-ban csak az elsô kockához generálódik, miután a felhasználó a FLIC menûbôl a NEW-t választotta.

 

 

FLI_BRUN Tömbök

 

Ezek hasonlók, mint a FLI_LC tömbök, de nem foglalkoznak a nem változott pixelekkel. Közvetlenül az elsô sor adataival kezdõdnek, és sorról sorra halad onnan tovább. Egy csomag formátuma a következõ:

 

méret_számláló

adat

 

Ha a méret_számláló pozitív, az adat egyetlen byte-ot tartalmaz ,melyet méret_számlálószor kell kiküldeni. Ha a méret_számláló negatív, akkor -méret_számláló adatbyte van, amelyeket egyenesen a képernyõre lehet küldeni. Az Autodesk Animator-ban ha a 'tömörített' adat úgy néz ki, hogy ha eléri a 60000 byte-ot, a képkocka inkább FLI_COPY-ként lesz tárolva.

 

 

FLI_COPY Tömbök

 

Ezek 64000 adatbyte-ot tartalmaznak, amelyek egyenesen a képernyôre küldhetôk

 

 

 

 

Ennyi Lenne. A lényeg, ahogy máskor is természetesen a progrmaban van !!!

A cikk Winword DOC formátumban
FLIPLAY.EXE !
 

Kimmel Tamás
eMail:PC-XUser@IDG.HU, Subject: "abC rovat"
KUMM@MI.STUD.PMMFK.JPTE.HU


Vissza a PC-X User 10 fôoldalához

 

PS: Az FLI file leírásána’igen erôsen támaszkodtam Kiszely László leírására. Köszi!!