De standaard eenheid wordt de movie. van zo'n movie kun je zeggen: afspeelrichting (+1 / -1) eerste en laatste frame lengte van de frames in de movie Als je op een bepaald frame de lengte van een frame in de movie veranderd, splits je als het ware de movie in 3-en (2-en): - het stuk voor dat frame - het frame zelf - het stuk na het frame. uiteindelijk moet er een soort directory structuur onstaan: elke subdir is een macro - meerdere movies achter elkaar af kunnen spelen - interactief aan en uit kunnen zetten - met tab / backspace naar volgende / vorige movie kunnen springen - frames deleten / inserten - lengte van frames kunnen zetten - inpunt kunnen zetten - scripten kunnen lezen / schrijven mogelijke acties: - play in elke richting / snelheid - stop automaties op eerste en laatste plaatje - spring naar plaatje absoluut en sta stil - spring naar plaatje relatief en sta stil Er zijn diverse bronnen voor input: - xwindows - videolibrary - movielibrary met vlRegisterHandler kan voor een fd's een handler aangewezen worden met vlCallCallbacks of vlMainLoop kan daarna alle events afgehandeld worden opname: 1 - zorg ervoor dat de buffer niet al te gevuld is (ook niet te leeg) 2 - bereken het verband tussen tijdcode op band en afgespeelde frames 3 - kijk vanaf welk frame de animatie moet starten 4 - start afspelen zodra dat frame in de buffer zit Dit kan nog nauwkeuriger: De video op de iris kan een continue stroom van tijdcodes sturen totdat er een nieuw commando komt. Voor gedefinieerde beelden: default (== black) black colorbars Opbouw van de file? - verschil tussen macro's en filenamen is dat een filenaam met een "/" begint. - daarna kun je aangeven van welk frame tot welk frame gebruikt worden - effecten worden gedefinieerd en blijven geldig totdat er een nieuwe gedefinieerd wordt. standaard is dat de desolve EDL1 "hulptape" { filenaam / "hulptape" [[#]-[#]] [speed [+-]#.#] [duration #.#] [offset #] ... } struct edit{ struct edit *next, *prev; void * what; /* wijst naar movie, of naar hulptape */ int what_is_what; /* bepaald of pointer naar hulptape of shot verwijst */ int first,last,offset; float speed; } struct hulptape { char * name; long framecount; struct edit * first; } struct shot { char * name; long framecount; MVid movie; MVid video; MVid audio; long audiocount; } Wat is de truck om te gaan rekenen met offest, first, last, speed ?? 1 - we rekenen van null -> aantal frames - 1 2 - de lengte van een shot is dus (last - first) + 1 frame als first en laast gelijk zijn, dan hebben we dus nog altijd 1 frame. 3 - als speed gezet is, dan geld: duration = ((last - first) + 1) / speed 4 - moeten framecount, fist, last, offset geen doubles worden ?