summaryrefslogtreecommitdiff
path: root/module/riff.m
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /module/riff.m
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'module/riff.m')
-rw-r--r--module/riff.m96
1 files changed, 96 insertions, 0 deletions
diff --git a/module/riff.m b/module/riff.m
new file mode 100644
index 00000000..130c71f6
--- /dev/null
+++ b/module/riff.m
@@ -0,0 +1,96 @@
+#
+# Microsoft Resource Interchange File Format
+# with AVI support
+#
+Riff: module
+{
+ PATH: con "/dis/lib/riff.dis";
+
+ DEFBUF: con 8192;
+
+ BI_RGB: con 0;
+ BI_RLE8: con 1;
+ BI_RLE4: con 2;
+ BI_BITFEILD: con 3;
+
+ RGB: adt
+ {
+ r: int;
+ g: int;
+ b: int;
+ };
+
+ Binfosize: con 10*4;
+ Bitmapinfo: adt # Windows bitmap info structure
+ {
+ width: int; # width in pixels
+ height: int; # height in pixels
+ planes: int; # planes of output device (must be 1)
+ bitcount: int; # bits per pixel
+ compression: int; # coding BI_RGB... or IV32 for indeo
+ sizeimage: int; # size in bytes of image
+ xpelpermeter: int; # resolution in pixels per meter
+ ypelpermeter: int;
+ clrused: int; # colors used
+ clrimportant: int; # how fixed is the map
+
+ cmap: array of RGB; # color map
+ };
+
+ AVImainhdr: con 14*4;
+ AVIhdr: adt
+ {
+ usecperframe: int;
+ bytesec: int;
+ flag: int;
+ frames: int;
+ initframes: int;
+ streams: int;
+ bufsize: int;
+ width: int;
+ height: int;
+ };
+
+ AVIstreamhdr: con 2*4 + 10*4;
+ AVIstream: adt
+ {
+ # Stream Header information
+ stype: string;
+ handler: string;
+ flags: int;
+ priority: int;
+ initframes: int;
+ scale: int;
+ rate: int;
+ start: int;
+ length: int;
+ bufsize: int;
+ quality: int;
+ samplesz: int;
+
+ # Stream Format information (decoder specific)
+ fmt: array of byte;
+ binfo: ref Bitmapinfo;
+
+ fmt2binfo: fn(a: self ref AVIstream): string;
+ };
+
+ # Riff descriptor
+ RD: adt
+ {
+ fd: ref sys->FD; # descriptor of RIFF file
+ buf: array of byte; # buffer
+ nbyte: int; # bytes remaining
+ ptr: int; # buffer pointer
+
+ gethdr: fn(r: self ref RD): (string, int);
+ readn: fn(r: self ref RD, b: array of byte, l: int): int;
+ check4: fn(r: self ref RD, code: string): string;
+ avihdr: fn(r: self ref RD): (ref AVIhdr, string);
+ streaminfo: fn(r: self ref RD): (ref AVIstream, string);
+ skip: fn(r: self ref RD, size: int): int;
+ };
+
+ init: fn();
+ open: fn(file: string): (ref RD, string);
+};