diff options
Diffstat (limited to 'module/grid/readjpg.m')
| -rw-r--r-- | module/grid/readjpg.m | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/module/grid/readjpg.m b/module/grid/readjpg.m new file mode 100644 index 00000000..4576381c --- /dev/null +++ b/module/grid/readjpg.m @@ -0,0 +1,95 @@ +Readjpg: module +{ + + PATH: con "/dis/grid/readjpg.dis"; + + ImageSource: adt + { + width: int; + height: int; + origw: int; + origh: int; + i: int; + jstate: ref Jpegstate; + data: array of byte; + }; + + Jpegstate: adt + { + # variables in i/o routines + sr: int; # shift register, right aligned + cnt: int; # # bits in right part of sr + + Nf: int; + comp: array of Framecomp; + mode: byte; + X,Y: int; + qt: array of array of int; # quantization tables + dcht: array of ref Huffman; + acht: array of ref Huffman; + Ns: int; + scomp: array of Scancomp; + Ss: int; + Se: int; + Ah: int; + Al: int; + ri: int; + nseg: int; + nblock: array of int; + + # progressive scan + dccoeff: array of array of int; + accoeff: array of array of array of int; # only need 8 bits plus quantization + nacross: int; + ndown: int; + Hmax: int; + Vmax: int; + }; + + Huffman: adt + { + bits: array of int; + size: array of int; + code: array of int; + val: array of int; + mincode: array of int; + maxcode: array of int; + valptr: array of int; + # fast lookup + value: array of int; + shift: array of int; + }; + + Framecomp: adt # Frame component specifier from SOF marker + { + C: int; + H: int; + V: int; + Tq: int; + }; + + Scancomp: adt # Frame component specifier from SOF marker + { + C: int; + tdc: int; + tac: int; + }; + + # Constants, all preceded by byte 16rFF + SOF: con 16rC0; # Start of Frame + SOF2: con 16rC2; # Start of Frame; progressive Huffman + DHT: con 16rC4; # Define Huffman Tables + RST: con 16rD0; # Restart interval termination + SOI: con 16rD8; # Start of Image + EOI: con 16rD9; # End of Image + SOS: con 16rDA; # Start of Scan + DQT: con 16rDB; # Define quantization tables + DNL: con 16rDC; # Define number of lines + DRI: con 16rDD; # Define restart interval + APPn: con 16rE0; # Reserved for application segments + COM: con 16rFE; # Comment + + init : fn (disp: ref Draw->Display); + fjpg2img : fn (fd: ref sys->FD, cachepath: string, chanin, chanout: chan of string): ref Image; + jpg2img : fn (filename, cachepath: string, chanin, chanout: chan of string): ref Image; +};
\ No newline at end of file |
