1*46439007SCharles.Forsyth# 2*46439007SCharles.Forsyth# Apple QuickTime File Format 3*46439007SCharles.Forsyth# 4*46439007SCharles.ForsythQuickTime: module 5*46439007SCharles.Forsyth{ 6*46439007SCharles.Forsyth PATH: con "/dis/lib/quicktime.dis"; 7*46439007SCharles.Forsyth 8*46439007SCharles.Forsyth DEFBUF: con 8192; 9*46439007SCharles.Forsyth 10*46439007SCharles.Forsyth AtomHDR: con 8; 11*46439007SCharles.Forsyth 12*46439007SCharles.Forsyth Tkhdr: adt 13*46439007SCharles.Forsyth { 14*46439007SCharles.Forsyth version: int; 15*46439007SCharles.Forsyth creation: int; 16*46439007SCharles.Forsyth modtime: int; 17*46439007SCharles.Forsyth trackid: int; 18*46439007SCharles.Forsyth timescale: int; 19*46439007SCharles.Forsyth duration: int; 20*46439007SCharles.Forsyth timeoff: int; 21*46439007SCharles.Forsyth priority: int; 22*46439007SCharles.Forsyth layer: int; 23*46439007SCharles.Forsyth altgrp: int; 24*46439007SCharles.Forsyth volume: int; 25*46439007SCharles.Forsyth matrix: array of int; 26*46439007SCharles.Forsyth width: int; 27*46439007SCharles.Forsyth height: int; 28*46439007SCharles.Forsyth }; 29*46439007SCharles.Forsyth 30*46439007SCharles.Forsyth MvhdrSIZE: con 100; 31*46439007SCharles.Forsyth Mvhdr: adt 32*46439007SCharles.Forsyth { 33*46439007SCharles.Forsyth version: int; 34*46439007SCharles.Forsyth create: int; 35*46439007SCharles.Forsyth modtime: int; 36*46439007SCharles.Forsyth timescale: int; 37*46439007SCharles.Forsyth duration: int; 38*46439007SCharles.Forsyth rate: int; 39*46439007SCharles.Forsyth vol: int; 40*46439007SCharles.Forsyth r1: int; 41*46439007SCharles.Forsyth r2: int; 42*46439007SCharles.Forsyth matrix: array of int; 43*46439007SCharles.Forsyth r3: int; 44*46439007SCharles.Forsyth r4: int; 45*46439007SCharles.Forsyth pvtime: int; 46*46439007SCharles.Forsyth posttime: int; 47*46439007SCharles.Forsyth seltime: int; 48*46439007SCharles.Forsyth seldurat: int; 49*46439007SCharles.Forsyth curtime: int; 50*46439007SCharles.Forsyth nxttkid: int; 51*46439007SCharles.Forsyth }; 52*46439007SCharles.Forsyth 53*46439007SCharles.Forsyth # QuickTime descriptor 54*46439007SCharles.Forsyth QD: adt 55*46439007SCharles.Forsyth { 56*46439007SCharles.Forsyth fd: ref sys->FD; # descriptor of QuickTime file 57*46439007SCharles.Forsyth buf: array of byte; # buffer 58*46439007SCharles.Forsyth nbyte: int; # bytes remaining 59*46439007SCharles.Forsyth ptr: int; # buffer pointer 60*46439007SCharles.Forsyth 61*46439007SCharles.Forsyth mvhdr: ref Mvhdr; # movie header desctiptor 62*46439007SCharles.Forsyth 63*46439007SCharles.Forsyth readn: fn(r: self ref QD, b: array of byte, l: int): int; 64*46439007SCharles.Forsyth skip: fn(r: self ref QD, size: int): int; 65*46439007SCharles.Forsyth skipatom: fn(r: self ref QD, size: int): int; 66*46439007SCharles.Forsyth atomhdr: fn(r: self ref QD): (string, int); 67*46439007SCharles.Forsyth mvhd: fn(r: self ref QD, l: int): string; 68*46439007SCharles.Forsyth trak: fn(r: self ref QD, l: int): string; 69*46439007SCharles.Forsyth }; 70*46439007SCharles.Forsyth 71*46439007SCharles.Forsyth init: fn(); 72*46439007SCharles.Forsyth open: fn(file: string): (ref QD, string); 73*46439007SCharles.Forsyth}; 74