xref: /inferno-os/module/quicktime.m (revision 46439007cf417cbd9ac8049bb4122c890097a0fa)
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