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