Mellékleteink: HUP | Gamekapocs
Keres

Flicks: új időegységet talált ki a Facebook

Gálffy Csaba, 2018. január 23. 15:51

Elkerülhető a lebegőpontos időábrázolás a kódban a Flicks használatával - ha fontos a precizitás, ez jól jöhet.

Egy új időegységet vezetne be a Facebook (pontosabban annak VR-os fejlesztéssel foglalkozó divíziója, az Oculus. A "flick" definíciója szerint ez a másodperc mintegy 705 milliomod része (egész pontosan 1/705600000 másodperc). Amitől érdekes a koncepció: a flick kód szintű implementációt is kapott (meglehetősen triviálisat), amely lehetővé teszi, hogy az st::chrono::duration és std::ratio hívásokon keresztül elérhető legyen a nagy felbontású belső órával rendelkező számítógépes rendszereken. Ezzel a programozók kapnak egy olyan egységet, ami a nanoszekundumoktől eltérően egész osztója a népszerűbb videós és hangos felbontásoknak.

Jellemző egyébként, hogy a flicket a Facebookon belül az Oculus csapat találta ki és implementálta, a virtuális valóságnál ugyanis nagyon fontos a videós és hangos anyagok pontos időzítése és szinkronban tartása, így ezek a fejlesztők folyamatosan gondban vannak ezzel.

Közös osztó

A flick lényege, hogy a népszerűbb másodperctöredékeket egész számú többszörösként tudja megjeleníteni. Így például az 1/24 másodperc az 29400000 flick időtartamnak felel meg, az 1/44100 (vagy 44,1 kHz) az pontosan 16000 flick. Ahogy ebből a két példából is látszik, a flick elsősorban az audiovizuális média kezelésénél releváns, ahol a különböző szabványokat használó forrásanyagok eltérő mintavételezéssel készülnek, az ezek közötti váltás, illetve ezek összehangolása a flick bevezetésével könnyebb, egyszerűbb lehet.

A flick egyébként az általánosan használt 24 Hz, 25 Hz, 30 Hz, 48 Hz, 60 Hz, 90 Hz, 100 Hz, 120 Hz frekvenciáknak egész osztója, sőt, az 1000 flick is az. Egy fontos formátumot viszont kihagyott a Facebook: az észak-amerikai televíziózásban általános NTSC által használt szokatlan frekvenciák, mint a 29.97 Hz támogatása már nem fért bele a flick definíciójába. A magyarázat: ez még a másodpercnek sem osztója, így esélytelen lett volna a flickkel kombinálni.

A gyakorlatban ez azt jelenti, hogy mind a másodperc, mind egy-egy frame kifejezhető egész flickekben úgy, hogy egyáltalán nem kell lebegőpontos számoláshoz nyúlni - ez is a projekt célja. Az eltelt és szimulált idő esetében ugyanis a lebegőpontos ábrázolás használata idővel egyre komolyabb pontosságvesztést hoz, ami csúszáshoz, szinkronvesztéshez vezet.

A kiadott kódot a Facebook a szabványos BSD licenc alatt nyújtja, amelyből ezúttal kihagyta a hírhedt szabadalmi kitételt. A kód használata meglehetősen egyszerű, a projekt GitHub oldalán részletesen is olvasható.

Facebook

Mit gondolsz? Mondd el!

Adatvédelmi okokból az adott hír megosztása előtt mindig aktiválnod kell a gombot! Ezzel a megoldással harmadik fél nem tudja nyomon követni a tevékenységedet a HWSW-n, ez pedig közös érdekünk.