home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part15
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| data
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 6a 70 65 67 | 2d 69 6e 66 6f 40 75 75 |om: jpeg|-info@uu|
|00000030| 6e 65 74 2e 75 75 2e 6e | 65 74 20 28 49 6e 64 65 |net.uu.n|et (Inde|
|00000040| 70 65 6e 64 65 6e 74 20 | 4a 50 45 47 20 47 72 6f |pendent |JPEG Gro|
|00000050| 75 70 29 0a 53 75 62 6a | 65 63 74 3a 20 20 76 33 |up).Subj|ect: v3|
|00000060| 34 69 30 36 39 3a 20 20 | 6a 70 65 67 20 2d 20 4a |4i069: |jpeg - J|
|00000070| 50 45 47 20 69 6d 61 67 | 65 20 63 6f 6d 70 72 65 |PEG imag|e compre|
|00000080| 73 73 69 6f 6e 2c 20 50 | 61 72 74 31 35 2f 31 38 |ssion, P|art15/18|
|00000090| 0a 4d 65 73 73 61 67 65 | 2d 49 44 3a 20 3c 31 39 |.Message|-ID: <19|
|000000a0| 39 32 44 65 63 31 37 2e | 31 36 35 30 35 32 2e 36 |92Dec17.|165052.6|
|000000b0| 38 30 34 40 73 70 61 72 | 6b 79 2e 69 6d 64 2e 73 |804@spar|ky.imd.s|
|000000c0| 74 65 72 6c 69 6e 67 2e | 63 6f 6d 3e 0a 58 2d 4d |terling.|com>.X-M|
|000000d0| 64 34 2d 53 69 67 6e 61 | 74 75 72 65 3a 20 31 32 |d4-Signa|ture: 12|
|000000e0| 66 32 35 34 35 31 33 65 | 39 37 36 14 62 35 62 61 |f254513e|976.b5ba|
|000000f0| 30 65 66 35 39 62 34 66 | 61 39 38 62 30 33 0a 44 |0ef59b4f|a98b03.D|
|00000100| 61 74 65 3a 20 54 68 75 | 2c 20 31 37 20 44 65 63 |ate: Thu|, 17 Dec|
|00000110| 20 31 39 39 32 20 31 36 | 3a 35 30 3a 35 32 20 47 | 1992 16|:50:52 G|
|00000120| 4d 54 0a 41 70 70 72 6f | 76 65 64 3a 20 6b 65 6e |MT.Appro|ved: ken|
|00000130| 74 40 73 70 61 72 6b 79 | 2e 69 6d 64 2e 73 74 65 |t@sparky|.imd.ste|
|00000140| 72 6c 69 6e 67 2e 63 6f | 6d 0a 0a 53 75 62 6d 69 |rling.co|m..Submi|
|00000150| 74 74 65 64 2d 62 79 3a | 20 6a 70 65 67 2d 69 6e |tted-by:| jpeg-in|
|00000160| 66 6f 40 75 75 6e 65 74 | 2e 75 75 2e 6e 65 74 20 |fo@uunet|.uu.net |
|00000170| 28 49 6e 64 65 70 65 6e | 64 65 6e 74 20 4a 50 45 |(Indepen|dent JPE|
|00000180| 47 20 47 72 6f 75 70 29 | 0a 50 6f 73 74 69 6e 67 |G Group)|.Posting|
|00000190| 2d 6e 75 6d 62 65 72 3a | 20 56 6f 6c 75 6d 65 20 |-number:| Volume |
|000001a0| 33 34 2c 20 49 73 73 75 | 65 20 36 39 0a 41 72 63 |34, Issu|e 69.Arc|
|000001b0| 68 69 76 65 2d 6e 61 6d | 65 3a 20 6a 70 65 67 2f |hive-nam|e: jpeg/|
|000001c0| 70 61 72 74 31 35 0a 45 | 6e 76 69 72 6f 6e 6d 65 |part15.E|nvironme|
|000001d0| 6e 74 3a 20 55 4e 49 58 | 2c 20 56 4d 53 2c 20 4d |nt: UNIX|, VMS, M|
|000001e0| 53 2d 44 4f 53 2c 20 4d | 61 63 2c 20 41 6d 69 67 |S-DOS, M|ac, Amig|
|000001f0| 61 2c 20 41 74 61 72 69 | 2c 20 43 72 61 79 0a 53 |a, Atari|, Cray.S|
|00000200| 75 70 65 72 73 65 64 65 | 73 3a 20 6a 70 65 67 3a |upersede|s: jpeg:|
|00000210| 20 56 6f 6c 75 6d 65 20 | 32 39 2c 20 49 73 73 75 | Volume |29, Issu|
|00000220| 65 20 31 2d 31 38 0a 0a | 23 21 20 2f 62 69 6e 2f |e 1-18..|#! /bin/|
|00000230| 73 68 0a 23 20 54 68 69 | 73 20 69 73 20 61 20 73 |sh.# Thi|s is a s|
|00000240| 68 65 6c 6c 20 61 72 63 | 68 69 76 65 2e 20 20 52 |hell arc|hive. R|
|00000250| 65 6d 6f 76 65 20 61 6e | 79 74 68 69 6e 67 20 62 |emove an|ything b|
|00000260| 65 66 6f 72 65 20 74 68 | 69 73 20 6c 69 6e 65 2c |efore th|is line,|
|00000270| 20 74 68 65 6e 20 66 65 | 65 64 20 69 74 0a 23 20 | then fe|ed it.# |
|00000280| 69 6e 74 6f 20 61 20 73 | 68 65 6c 6c 20 76 69 61 |into a s|hell via|
|00000290| 20 22 73 68 20 66 69 6c | 65 22 20 6f 72 20 73 69 | "sh fil|e" or si|
|000002a0| 6d 69 6c 61 72 2e 20 20 | 54 6f 20 6f 76 65 72 77 |milar. |To overw|
|000002b0| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|000002c0| 6c 65 73 2c 0a 23 20 74 | 79 70 65 20 22 73 68 20 |les,.# t|ype "sh |
|000002d0| 66 69 6c 65 20 2d 63 22 | 2e 0a 23 20 43 6f 6e 74 |file -c"|..# Cont|
|000002e0| 65 6e 74 73 3a 20 20 6a | 63 63 6f 6c 6f 72 2e 63 |ents: j|ccolor.c|
|000002f0| 20 6a 64 63 6f 6c 6f 72 | 2e 63 20 6a 6d 65 6d 64 | jdcolor|.c jmemd|
|00000300| 6f 73 61 2e 61 73 6d 20 | 6a 77 72 70 70 6d 2e 63 |osa.asm |jwrppm.c|
|00000310| 20 6a 77 72 72 6c 65 2e | 63 0a 23 20 20 20 6a 77 | jwrrle.|c.# jw|
|00000320| 72 74 61 72 67 61 2e 63 | 0a 23 20 57 72 61 70 70 |rtarga.c|.# Wrapp|
|00000330| 65 64 20 62 79 20 6b 65 | 6e 74 40 73 70 61 72 6b |ed by ke|nt@spark|
|00000340| 79 20 6f 6e 20 57 65 64 | 20 44 65 63 20 31 36 20 |y on Wed| Dec 16 |
|00000350| 32 30 3a 35 32 3a 33 30 | 20 31 39 39 32 0a 50 41 |20:52:30| 1992.PA|
|00000360| 54 48 3d 2f 62 69 6e 3a | 2f 75 73 72 2f 62 69 6e |TH=/bin:|/usr/bin|
|00000370| 3a 2f 75 73 72 2f 75 63 | 62 3a 2f 75 73 72 2f 6c |:/usr/uc|b:/usr/l|
|00000380| 6f 63 61 6c 2f 62 69 6e | 3a 2f 75 73 72 2f 6c 62 |ocal/bin|:/usr/lb|
|00000390| 69 6e 20 3b 20 65 78 70 | 6f 72 74 20 50 41 54 48 |in ; exp|ort PATH|
|000003a0| 0a 65 63 68 6f 20 49 66 | 20 74 68 69 73 20 61 72 |.echo If| this ar|
|000003b0| 63 68 69 76 65 20 69 73 | 20 63 6f 6d 70 6c 65 74 |chive is| complet|
|000003c0| 65 2c 20 79 6f 75 20 77 | 69 6c 6c 20 73 65 65 20 |e, you w|ill see |
|000003d0| 74 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 6d 65 |the foll|owing me|
|000003e0| 73 73 61 67 65 3a 0a 65 | 63 68 6f 20 27 20 20 20 |ssage:.e|cho ' |
|000003f0| 20 20 20 20 20 20 20 22 | 73 68 61 72 3a 20 45 6e | "|shar: En|
|00000400| 64 20 6f 66 20 61 72 63 | 68 69 76 65 20 31 35 20 |d of arc|hive 15 |
|00000410| 28 6f 66 20 31 38 29 2e | 22 27 0a 69 66 20 74 65 |(of 18).|"'.if te|
|00000420| 73 74 20 2d 66 20 27 6a | 63 63 6f 6c 6f 72 2e 63 |st -f 'j|ccolor.c|
|00000430| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00000440| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00000450| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00000460| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00000470| 6e 67 20 66 69 6c 65 20 | 5c 22 27 6a 63 63 6f 6c |ng file |\"'jccol|
|00000480| 6f 72 2e 63 27 5c 22 0a | 65 6c 73 65 0a 20 20 65 |or.c'\".|else. e|
|00000490| 63 68 6f 20 73 68 61 72 | 3a 20 45 78 74 72 61 63 |cho shar|: Extrac|
|000004a0| 74 69 6e 67 20 5c 22 27 | 6a 63 63 6f 6c 6f 72 2e |ting \"'|jccolor.|
|000004b0| 63 27 5c 22 20 5c 28 31 | 31 32 33 36 20 63 68 61 |c'\" \(1|1236 cha|
|000004c0| 72 61 63 74 65 72 73 5c | 29 0a 20 20 73 65 64 20 |racters\|). sed |
|000004d0| 22 73 2f 5e 58 2f 2f 22 | 20 3e 27 6a 63 63 6f 6c |"s/^X//"| >'jccol|
|000004e0| 6f 72 2e 63 27 20 3c 3c | 27 45 4e 44 5f 4f 46 5f |or.c' <<|'END_OF_|
|000004f0| 46 49 4c 45 27 0a 58 2f | 2a 0a 58 20 2a 20 6a 63 |FILE'.X/|*.X * jc|
|00000500| 63 6f 6c 6f 72 2e 63 0a | 58 20 2a 0a 58 20 2a 20 |color.c.|X *.X * |
|00000510| 43 6f 70 79 72 69 67 68 | 74 20 28 43 29 20 31 39 |Copyrigh|t (C) 19|
|00000520| 39 31 2c 20 31 39 39 32 | 2c 20 54 68 6f 6d 61 73 |91, 1992|, Thomas|
|00000530| 20 47 2e 20 4c 61 6e 65 | 2e 0a 58 20 2a 20 54 68 | G. Lane|..X * Th|
|00000540| 69 73 20 66 69 6c 65 20 | 69 73 20 70 61 72 74 20 |is file |is part |
|00000550| 6f 66 20 74 68 65 20 49 | 6e 64 65 70 65 6e 64 65 |of the I|ndepende|
|00000560| 6e 74 20 4a 50 45 47 20 | 47 72 6f 75 70 27 73 20 |nt JPEG |Group's |
|00000570| 73 6f 66 74 77 61 72 65 | 2e 0a 58 20 2a 20 46 6f |software|..X * Fo|
|00000580| 72 20 63 6f 6e 64 69 74 | 69 6f 6e 73 20 6f 66 20 |r condit|ions of |
|00000590| 64 69 73 74 72 69 62 75 | 74 69 6f 6e 20 61 6e 64 |distribu|tion and|
|000005a0| 20 75 73 65 2c 20 73 65 | 65 20 74 68 65 20 61 63 | use, se|e the ac|
|000005b0| 63 6f 6d 70 61 6e 79 69 | 6e 67 20 52 45 41 44 4d |companyi|ng READM|
|000005c0| 45 20 66 69 6c 65 2e 0a | 58 20 2a 0a 58 20 2a 20 |E file..|X *.X * |
|000005d0| 54 68 69 73 20 66 69 6c | 65 20 63 6f 6e 74 61 69 |This fil|e contai|
|000005e0| 6e 73 20 69 6e 70 75 74 | 20 63 6f 6c 6f 72 73 70 |ns input| colorsp|
|000005f0| 61 63 65 20 63 6f 6e 76 | 65 72 73 69 6f 6e 20 72 |ace conv|ersion r|
|00000600| 6f 75 74 69 6e 65 73 2e | 0a 58 20 2a 20 54 68 65 |outines.|.X * The|
|00000610| 73 65 20 72 6f 75 74 69 | 6e 65 73 20 61 72 65 20 |se routi|nes are |
|00000620| 69 6e 76 6f 6b 65 64 20 | 76 69 61 20 74 68 65 20 |invoked |via the |
|00000630| 6d 65 74 68 6f 64 73 20 | 67 65 74 5f 73 61 6d 70 |methods |get_samp|
|00000640| 6c 65 5f 72 6f 77 73 0a | 58 20 2a 20 61 6e 64 20 |le_rows.|X * and |
|00000650| 63 6f 6c 6f 72 69 6e 5f | 69 6e 69 74 2f 74 65 72 |colorin_|init/ter|
|00000660| 6d 2e 0a 58 20 2a 2f 0a | 58 0a 58 23 69 6e 63 6c |m..X */.|X.X#incl|
|00000670| 75 64 65 20 22 6a 69 6e | 63 6c 75 64 65 2e 68 22 |ude "jin|clude.h"|
|00000680| 0a 58 0a 58 0a 58 73 74 | 61 74 69 63 20 4a 53 41 |.X.X.Xst|atic JSA|
|00000690| 4d 50 41 52 52 41 59 20 | 70 69 78 65 6c 5f 72 6f |MPARRAY |pixel_ro|
|000006a0| 77 3b 09 2f 2a 20 57 6f | 72 6b 73 70 61 63 65 20 |w;./* Wo|rkspace |
|000006b0| 66 6f 72 20 61 20 70 69 | 78 65 6c 20 72 6f 77 20 |for a pi|xel row |
|000006c0| 69 6e 20 69 6e 70 75 74 | 20 66 6f 72 6d 61 74 20 |in input| format |
|000006d0| 2a 2f 0a 58 0a 58 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |*/.X.X.X|/*******|
|000006e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 20 52 47 42 20 2d 3e |********|* RGB ->|
|000006f0| 20 59 43 62 43 72 20 63 | 6f 6e 76 65 72 73 69 6f | YCbCr c|onversio|
|00000700| 6e 3a 20 6d 6f 73 74 20 | 63 6f 6d 6d 6f 6e 20 63 |n: most |common c|
|00000710| 61 73 65 20 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |ase ****|********|
|00000720| 2a 2a 2f 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 59 43 |**/.X.X/|*.X * YC|
|00000730| 62 43 72 20 69 73 20 64 | 65 66 69 6e 65 64 20 70 |bCr is d|efined p|
|00000740| 65 72 20 43 43 49 52 20 | 36 30 31 2d 31 2c 20 65 |er CCIR |601-1, e|
|00000750| 78 63 65 70 74 20 74 68 | 61 74 20 43 62 20 61 6e |xcept th|at Cb an|
|00000760| 64 20 43 72 20 61 72 65 | 0a 58 20 2a 20 6e 6f 72 |d Cr are|.X * nor|
|00000770| 6d 61 6c 69 7a 65 64 20 | 74 6f 20 74 68 65 20 72 |malized |to the r|
|00000780| 61 6e 67 65 20 30 2e 2e | 4d 41 58 4a 53 41 4d 50 |ange 0..|MAXJSAMP|
|00000790| 4c 45 20 72 61 74 68 65 | 72 20 74 68 61 6e 20 2d |LE rathe|r than -|
|000007a0| 30 2e 35 20 2e 2e 20 30 | 2e 35 2e 0a 58 20 2a 20 |0.5 .. 0|.5..X * |
|000007b0| 54 68 65 20 63 6f 6e 76 | 65 72 73 69 6f 6e 20 65 |The conv|ersion e|
|000007c0| 71 75 61 74 69 6f 6e 73 | 20 74 6f 20 62 65 20 69 |quations| to be i|
|000007d0| 6d 70 6c 65 6d 65 6e 74 | 65 64 20 61 72 65 20 74 |mplement|ed are t|
|000007e0| 68 65 72 65 66 6f 72 65 | 0a 58 20 2a 09 59 20 20 |herefore|.X *.Y |
|000007f0| 3d 20 20 30 2e 32 39 39 | 30 30 20 2a 20 52 20 2b |= 0.299|00 * R +|
|00000800| 20 30 2e 35 38 37 30 30 | 20 2a 20 47 20 2b 20 30 | 0.58700| * G + 0|
|00000810| 2e 31 31 34 30 30 20 2a | 20 42 0a 58 20 2a 09 43 |.11400 *| B.X *.C|
|00000820| 62 20 3d 20 2d 30 2e 31 | 36 38 37 34 20 2a 20 52 |b = -0.1|6874 * R|
|00000830| 20 2d 20 30 2e 33 33 31 | 32 36 20 2a 20 47 20 2b | - 0.331|26 * G +|
|00000840| 20 30 2e 35 30 30 30 30 | 20 2a 20 42 20 20 2b 20 | 0.50000| * B + |
|00000850| 4d 41 58 4a 53 41 4d 50 | 4c 45 2f 32 0a 58 20 2a |MAXJSAMP|LE/2.X *|
|00000860| 09 43 72 20 3d 20 20 30 | 2e 35 30 30 30 30 20 2a |.Cr = 0|.50000 *|
|00000870| 20 52 20 2d 20 30 2e 34 | 31 38 36 39 20 2a 20 47 | R - 0.4|1869 * G|
|00000880| 20 2d 20 30 2e 30 38 31 | 33 31 20 2a 20 42 20 20 | - 0.081|31 * B |
|00000890| 2b 20 4d 41 58 4a 53 41 | 4d 50 4c 45 2f 32 0a 58 |+ MAXJSA|MPLE/2.X|
|000008a0| 20 2a 20 28 54 68 65 73 | 65 20 6e 75 6d 62 65 72 | * (Thes|e number|
|000008b0| 73 20 61 72 65 20 64 65 | 72 69 76 65 64 20 66 72 |s are de|rived fr|
|000008c0| 6f 6d 20 54 49 46 46 20 | 36 2e 30 20 73 65 63 74 |om TIFF |6.0 sect|
|000008d0| 69 6f 6e 20 32 31 2c 20 | 64 61 74 65 64 20 33 2d |ion 21, |dated 3-|
|000008e0| 4a 75 6e 65 2d 39 32 2e | 29 0a 58 20 2a 0a 58 20 |June-92.|).X *.X |
|000008f0| 2a 20 54 6f 20 61 76 6f | 69 64 20 66 6c 6f 61 74 |* To avo|id float|
|00000900| 69 6e 67 2d 70 6f 69 6e | 74 20 61 72 69 74 68 6d |ing-poin|t arithm|
|00000910| 65 74 69 63 2c 20 77 65 | 20 72 65 70 72 65 73 65 |etic, we| represe|
|00000920| 6e 74 20 74 68 65 20 66 | 72 61 63 74 69 6f 6e 61 |nt the f|ractiona|
|00000930| 6c 20 63 6f 6e 73 74 61 | 6e 74 73 0a 58 20 2a 20 |l consta|nts.X * |
|00000940| 61 73 20 69 6e 74 65 67 | 65 72 73 20 73 63 61 6c |as integ|ers scal|
|00000950| 65 64 20 75 70 20 62 79 | 20 32 5e 31 36 20 28 61 |ed up by| 2^16 (a|
|00000960| 62 6f 75 74 20 34 20 64 | 69 67 69 74 73 20 70 72 |bout 4 d|igits pr|
|00000970| 65 63 69 73 69 6f 6e 29 | 3b 20 77 65 20 68 61 76 |ecision)|; we hav|
|00000980| 65 20 74 6f 20 64 69 76 | 69 64 65 0a 58 20 2a 20 |e to div|ide.X * |
|00000990| 74 68 65 20 70 72 6f 64 | 75 63 74 73 20 62 79 20 |the prod|ucts by |
|000009a0| 32 5e 31 36 2c 20 77 69 | 74 68 20 61 70 70 72 6f |2^16, wi|th appro|
|000009b0| 70 72 69 61 74 65 20 72 | 6f 75 6e 64 69 6e 67 2c |priate r|ounding,|
|000009c0| 20 74 6f 20 67 65 74 20 | 74 68 65 20 63 6f 72 72 | to get |the corr|
|000009d0| 65 63 74 20 61 6e 73 77 | 65 72 2e 0a 58 20 2a 0a |ect answ|er..X *.|
|000009e0| 58 20 2a 20 46 6f 72 20 | 65 76 65 6e 20 6d 6f 72 |X * For |even mor|
|000009f0| 65 20 73 70 65 65 64 2c | 20 77 65 20 61 76 6f 69 |e speed,| we avoi|
|00000a00| 64 20 64 6f 69 6e 67 20 | 61 6e 79 20 6d 75 6c 74 |d doing |any mult|
|00000a10| 69 70 6c 69 63 61 74 69 | 6f 6e 73 20 69 6e 20 74 |iplicati|ons in t|
|00000a20| 68 65 20 69 6e 6e 65 72 | 20 6c 6f 6f 70 0a 58 20 |he inner| loop.X |
|00000a30| 2a 20 62 79 20 70 72 65 | 63 61 6c 63 75 6c 61 74 |* by pre|calculat|
|00000a40| 69 6e 67 20 74 68 65 20 | 63 6f 6e 73 74 61 6e 74 |ing the |constant|
|00000a50| 73 20 74 69 6d 65 73 20 | 52 2c 47 2c 42 20 66 6f |s times |R,G,B fo|
|00000a60| 72 20 61 6c 6c 20 70 6f | 73 73 69 62 6c 65 20 76 |r all po|ssible v|
|00000a70| 61 6c 75 65 73 2e 0a 58 | 20 2a 20 46 6f 72 20 38 |alues..X| * For 8|
|00000a80| 2d 62 69 74 20 4a 53 41 | 4d 50 4c 45 73 20 74 68 |-bit JSA|MPLEs th|
|00000a90| 69 73 20 69 73 20 76 65 | 72 79 20 72 65 61 73 6f |is is ve|ry reaso|
|00000aa0| 6e 61 62 6c 65 20 28 6f | 6e 6c 79 20 32 35 36 20 |nable (o|nly 256 |
|00000ab0| 65 6e 74 72 69 65 73 20 | 70 65 72 20 74 61 62 6c |entries |per tabl|
|00000ac0| 65 29 3b 0a 58 20 2a 20 | 66 6f 72 20 31 32 2d 62 |e);.X * |for 12-b|
|00000ad0| 69 74 20 73 61 6d 70 6c | 65 73 20 69 74 20 69 73 |it sampl|es it is|
|00000ae0| 20 73 74 69 6c 6c 20 61 | 63 63 65 70 74 61 62 6c | still a|cceptabl|
|00000af0| 65 2e 20 20 49 74 27 73 | 20 6e 6f 74 20 76 65 72 |e. It's| not ver|
|00000b00| 79 20 72 65 61 73 6f 6e | 61 62 6c 65 20 66 6f 72 |y reason|able for|
|00000b10| 0a 58 20 2a 20 31 36 2d | 62 69 74 20 73 61 6d 70 |.X * 16-|bit samp|
|00000b20| 6c 65 73 2c 20 62 75 74 | 20 69 66 20 79 6f 75 20 |les, but| if you |
|00000b30| 77 61 6e 74 20 6c 6f 73 | 73 6c 65 73 73 20 73 74 |want los|sless st|
|00000b40| 6f 72 61 67 65 20 79 6f | 75 20 73 68 6f 75 6c 64 |orage yo|u should|
|00000b50| 6e 27 74 20 62 65 20 63 | 68 61 6e 67 69 6e 67 0a |n't be c|hanging.|
|00000b60| 58 20 2a 20 63 6f 6c 6f | 72 73 70 61 63 65 20 61 |X * colo|rspace a|
|00000b70| 6e 79 77 61 79 2e 0a 58 | 20 2a 20 54 68 65 20 4d |nyway..X| * The M|
|00000b80| 41 58 4a 53 41 4d 50 4c | 45 2f 32 20 6f 66 66 73 |AXJSAMPL|E/2 offs|
|00000b90| 65 74 73 20 61 6e 64 20 | 74 68 65 20 72 6f 75 6e |ets and |the roun|
|00000ba0| 64 69 6e 67 20 66 75 64 | 67 65 2d 66 61 63 74 6f |ding fud|ge-facto|
|00000bb0| 72 20 6f 66 20 30 2e 35 | 20 61 72 65 20 69 6e 63 |r of 0.5| are inc|
|00000bc0| 6c 75 64 65 64 0a 58 20 | 2a 20 69 6e 20 74 68 65 |luded.X |* in the|
|00000bd0| 20 74 61 62 6c 65 73 20 | 74 6f 20 73 61 76 65 20 | tables |to save |
|00000be0| 61 64 64 69 6e 67 20 74 | 68 65 6d 20 73 65 70 61 |adding t|hem sepa|
|00000bf0| 72 61 74 65 6c 79 20 69 | 6e 20 74 68 65 20 69 6e |rately i|n the in|
|00000c00| 6e 65 72 20 6c 6f 6f 70 | 2e 0a 58 20 2a 2f 0a 58 |ner loop|..X */.X|
|00000c10| 0a 58 23 69 66 64 65 66 | 20 53 49 58 54 45 45 4e |.X#ifdef| SIXTEEN|
|00000c20| 5f 42 49 54 5f 53 41 4d | 50 4c 45 53 0a 58 23 64 |_BIT_SAM|PLES.X#d|
|00000c30| 65 66 69 6e 65 20 53 43 | 41 4c 45 42 49 54 53 09 |efine SC|ALEBITS.|
|00000c40| 31 34 09 2f 2a 20 61 76 | 6f 69 64 20 6f 76 65 72 |14./* av|oid over|
|00000c50| 66 6c 6f 77 20 2a 2f 0a | 58 23 65 6c 73 65 0a 58 |flow */.|X#else.X|
|00000c60| 23 64 65 66 69 6e 65 20 | 53 43 41 4c 45 42 49 54 |#define |SCALEBIT|
|00000c70| 53 09 31 36 09 2f 2a 20 | 73 70 65 65 64 69 65 72 |S.16./* |speedier|
|00000c80| 20 72 69 67 68 74 2d 73 | 68 69 66 74 20 6f 6e 20 | right-s|hift on |
|00000c90| 73 6f 6d 65 20 6d 61 63 | 68 69 6e 65 73 20 2a 2f |some mac|hines */|
|00000ca0| 0a 58 23 65 6e 64 69 66 | 0a 58 23 64 65 66 69 6e |.X#endif|.X#defin|
|00000cb0| 65 20 4f 4e 45 5f 48 41 | 4c 46 09 28 28 49 4e 54 |e ONE_HA|LF.((INT|
|00000cc0| 33 32 29 20 31 20 3c 3c | 20 28 53 43 41 4c 45 42 |32) 1 <<| (SCALEB|
|00000cd0| 49 54 53 2d 31 29 29 0a | 58 23 64 65 66 69 6e 65 |ITS-1)).|X#define|
|00000ce0| 20 46 49 58 28 78 29 09 | 09 28 28 49 4e 54 33 32 | FIX(x).|.((INT32|
|00000cf0| 29 20 28 28 78 29 20 2a | 20 28 31 4c 3c 3c 53 43 |) ((x) *| (1L<<SC|
|00000d00| 41 4c 45 42 49 54 53 29 | 20 2b 20 30 2e 35 29 29 |ALEBITS)| + 0.5))|
|00000d10| 0a 58 0a 58 2f 2a 20 57 | 65 20 61 6c 6c 6f 63 61 |.X.X/* W|e alloca|
|00000d20| 74 65 20 6f 6e 65 20 62 | 69 67 20 74 61 62 6c 65 |te one b|ig table|
|00000d30| 20 61 6e 64 20 64 69 76 | 69 64 65 20 69 74 20 75 | and div|ide it u|
|00000d40| 70 20 69 6e 74 6f 20 65 | 69 67 68 74 20 70 61 72 |p into e|ight par|
|00000d50| 74 73 2c 20 69 6e 73 74 | 65 61 64 20 6f 66 0a 58 |ts, inst|ead of.X|
|00000d60| 20 2a 20 64 6f 69 6e 67 | 20 65 69 67 68 74 20 61 | * doing| eight a|
|00000d70| 6c 6c 6f 63 5f 73 6d 61 | 6c 6c 20 72 65 71 75 65 |lloc_sma|ll reque|
|00000d80| 73 74 73 2e 20 20 54 68 | 69 73 20 6c 65 74 73 20 |sts. Th|is lets |
|00000d90| 75 73 20 75 73 65 20 61 | 20 73 69 6e 67 6c 65 20 |us use a| single |
|00000da0| 74 61 62 6c 65 20 62 61 | 73 65 0a 58 20 2a 20 61 |table ba|se.X * a|
|00000db0| 64 64 72 65 73 73 2c 20 | 77 68 69 63 68 20 63 61 |ddress, |which ca|
|00000dc0| 6e 20 62 65 20 68 65 6c | 64 20 69 6e 20 61 20 72 |n be hel|d in a r|
|00000dd0| 65 67 69 73 74 65 72 20 | 69 6e 20 74 68 65 20 69 |egister |in the i|
|00000de0| 6e 6e 65 72 20 6c 6f 6f | 70 73 20 6f 6e 20 6d 61 |nner loo|ps on ma|
|00000df0| 6e 79 0a 58 20 2a 20 6d | 61 63 68 69 6e 65 73 20 |ny.X * m|achines |
|00000e00| 28 6d 6f 72 65 20 74 68 | 61 6e 20 63 61 6e 20 68 |(more th|an can h|
|00000e10| 6f 6c 64 20 61 6c 6c 20 | 65 69 67 68 74 20 61 64 |old all |eight ad|
|00000e20| 64 72 65 73 73 65 73 2c | 20 61 6e 79 77 61 79 29 |dresses,| anyway)|
|00000e30| 2e 0a 58 20 2a 2f 0a 58 | 0a 58 73 74 61 74 69 63 |..X */.X|.Xstatic|
|00000e40| 20 49 4e 54 33 32 20 2a | 20 72 67 62 5f 79 63 63 | INT32 *| rgb_ycc|
|00000e50| 5f 74 61 62 3b 09 2f 2a | 20 3d 3e 20 74 61 62 6c |_tab;./*| => tabl|
|00000e60| 65 20 66 6f 72 20 52 47 | 42 20 74 6f 20 59 43 62 |e for RG|B to YCb|
|00000e70| 43 72 20 63 6f 6e 76 65 | 72 73 69 6f 6e 20 2a 2f |Cr conve|rsion */|
|00000e80| 0a 58 23 64 65 66 69 6e | 65 20 52 5f 59 5f 4f 46 |.X#defin|e R_Y_OF|
|00000e90| 46 09 09 30 09 09 09 2f | 2a 20 6f 66 66 73 65 74 |F..0.../|* offset|
|00000ea0| 20 74 6f 20 52 20 3d 3e | 20 59 20 73 65 63 74 69 | to R =>| Y secti|
|00000eb0| 6f 6e 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 47 |on */.X#|define G|
|00000ec0| 5f 59 5f 4f 46 46 09 09 | 28 31 2a 28 4d 41 58 4a |_Y_OFF..|(1*(MAXJ|
|00000ed0| 53 41 4d 50 4c 45 2b 31 | 29 29 09 2f 2a 20 6f 66 |SAMPLE+1|))./* of|
|00000ee0| 66 73 65 74 20 74 6f 20 | 47 20 3d 3e 20 59 20 73 |fset to |G => Y s|
|00000ef0| 65 63 74 69 6f 6e 20 2a | 2f 0a 58 23 64 65 66 69 |ection *|/.X#defi|
|00000f00| 6e 65 20 42 5f 59 5f 4f | 46 46 09 09 28 32 2a 28 |ne B_Y_O|FF..(2*(|
|00000f10| 4d 41 58 4a 53 41 4d 50 | 4c 45 2b 31 29 29 09 2f |MAXJSAMP|LE+1))./|
|00000f20| 2a 20 65 74 63 2e 20 2a | 2f 0a 58 23 64 65 66 69 |* etc. *|/.X#defi|
|00000f30| 6e 65 20 52 5f 43 42 5f | 4f 46 46 09 28 33 2a 28 |ne R_CB_|OFF.(3*(|
|00000f40| 4d 41 58 4a 53 41 4d 50 | 4c 45 2b 31 29 29 0a 58 |MAXJSAMP|LE+1)).X|
|00000f50| 23 64 65 66 69 6e 65 20 | 47 5f 43 42 5f 4f 46 46 |#define |G_CB_OFF|
|00000f60| 09 28 34 2a 28 4d 41 58 | 4a 53 41 4d 50 4c 45 2b |.(4*(MAX|JSAMPLE+|
|00000f70| 31 29 29 0a 58 23 64 65 | 66 69 6e 65 20 42 5f 43 |1)).X#de|fine B_C|
|00000f80| 42 5f 4f 46 46 09 28 35 | 2a 28 4d 41 58 4a 53 41 |B_OFF.(5|*(MAXJSA|
|00000f90| 4d 50 4c 45 2b 31 29 29 | 0a 58 23 64 65 66 69 6e |MPLE+1))|.X#defin|
|00000fa0| 65 20 52 5f 43 52 5f 4f | 46 46 09 42 5f 43 42 5f |e R_CR_O|FF.B_CB_|
|00000fb0| 4f 46 46 09 09 2f 2a 20 | 42 3d 3e 43 62 2c 20 52 |OFF../* |B=>Cb, R|
|00000fc0| 3d 3e 43 72 20 61 72 65 | 20 74 68 65 20 73 61 6d |=>Cr are| the sam|
|00000fd0| 65 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 47 5f |e */.X#d|efine G_|
|00000fe0| 43 52 5f 4f 46 46 09 28 | 36 2a 28 4d 41 58 4a 53 |CR_OFF.(|6*(MAXJS|
|00000ff0| 41 4d 50 4c 45 2b 31 29 | 29 0a 58 23 64 65 66 69 |AMPLE+1)|).X#defi|
|00001000| 6e 65 20 42 5f 43 52 5f | 4f 46 46 09 28 37 2a 28 |ne B_CR_|OFF.(7*(|
|00001010| 4d 41 58 4a 53 41 4d 50 | 4c 45 2b 31 29 29 0a 58 |MAXJSAMP|LE+1)).X|
|00001020| 23 64 65 66 69 6e 65 20 | 54 41 42 4c 45 5f 53 49 |#define |TABLE_SI|
|00001030| 5a 45 09 28 38 2a 28 4d | 41 58 4a 53 41 4d 50 4c |ZE.(8*(M|AXJSAMPL|
|00001040| 45 2b 31 29 29 0a 58 0a | 58 0a 58 2f 2a 0a 58 20 |E+1)).X.|X.X/*.X |
|00001050| 2a 20 49 6e 69 74 69 61 | 6c 69 7a 65 20 66 6f 72 |* Initia|lize for|
|00001060| 20 63 6f 6c 6f 72 73 70 | 61 63 65 20 63 6f 6e 76 | colorsp|ace conv|
|00001070| 65 72 73 69 6f 6e 2e 0a | 58 20 2a 2f 0a 58 0a 58 |ersion..|X */.X.X|
|00001080| 4d 45 54 48 4f 44 44 45 | 46 20 76 6f 69 64 0a 58 |METHODDE|F void.X|
|00001090| 72 67 62 5f 79 63 63 5f | 69 6e 69 74 20 28 63 6f |rgb_ycc_|init (co|
|000010a0| 6d 70 72 65 73 73 5f 69 | 6e 66 6f 5f 70 74 72 20 |mpress_i|nfo_ptr |
|000010b0| 63 69 6e 66 6f 29 0a 58 | 7b 0a 58 20 20 49 4e 54 |cinfo).X|{.X INT|
|000010c0| 33 32 20 69 3b 0a 58 0a | 58 20 20 2f 2a 20 41 6c |32 i;.X.|X /* Al|
|000010d0| 6c 6f 63 61 74 65 20 61 | 20 77 6f 72 6b 73 70 61 |locate a| workspa|
|000010e0| 63 65 20 66 6f 72 20 74 | 68 65 20 72 65 73 75 6c |ce for t|he resul|
|000010f0| 74 20 6f 66 20 67 65 74 | 5f 69 6e 70 75 74 5f 72 |t of get|_input_r|
|00001100| 6f 77 2e 20 2a 2f 0a 58 | 20 20 70 69 78 65 6c 5f |ow. */.X| pixel_|
|00001110| 72 6f 77 20 3d 20 28 2a | 63 69 6e 66 6f 2d 3e 65 |row = (*|cinfo->e|
|00001120| 6d 65 74 68 6f 64 73 2d | 3e 61 6c 6c 6f 63 5f 73 |methods-|>alloc_s|
|00001130| 6d 61 6c 6c 5f 73 61 72 | 72 61 79 29 0a 58 09 09 |mall_sar|ray).X..|
|00001140| 28 63 69 6e 66 6f 2d 3e | 69 6d 61 67 65 5f 77 69 |(cinfo->|image_wi|
|00001150| 64 74 68 2c 20 28 6c 6f | 6e 67 29 20 63 69 6e 66 |dth, (lo|ng) cinf|
|00001160| 6f 2d 3e 69 6e 70 75 74 | 5f 63 6f 6d 70 6f 6e 65 |o->input|_compone|
|00001170| 6e 74 73 29 3b 0a 58 0a | 58 20 20 2f 2a 20 41 6c |nts);.X.|X /* Al|
|00001180| 6c 6f 63 61 74 65 20 61 | 6e 64 20 66 69 6c 6c 20 |locate a|nd fill |
|00001190| 69 6e 20 74 68 65 20 63 | 6f 6e 76 65 72 73 69 6f |in the c|onversio|
|000011a0| 6e 20 74 61 62 6c 65 73 | 2e 20 2a 2f 0a 58 20 20 |n tables|. */.X |
|000011b0| 72 67 62 5f 79 63 63 5f | 74 61 62 20 3d 20 28 49 |rgb_ycc_|tab = (I|
|000011c0| 4e 54 33 32 20 2a 29 20 | 28 2a 63 69 6e 66 6f 2d |NT32 *) |(*cinfo-|
|000011d0| 3e 65 6d 65 74 68 6f 64 | 73 2d 3e 61 6c 6c 6f 63 |>emethod|s->alloc|
|000011e0| 5f 73 6d 61 6c 6c 29 0a | 58 09 09 09 09 28 54 41 |_small).|X....(TA|
|000011f0| 42 4c 45 5f 53 49 5a 45 | 20 2a 20 53 49 5a 45 4f |BLE_SIZE| * SIZEO|
|00001200| 46 28 49 4e 54 33 32 29 | 29 3b 0a 58 0a 58 20 20 |F(INT32)|);.X.X |
|00001210| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 3d |for (i =| 0; i <=|
|00001220| 20 4d 41 58 4a 53 41 4d | 50 4c 45 3b 20 69 2b 2b | MAXJSAM|PLE; i++|
|00001230| 29 20 7b 0a 58 20 20 20 | 20 72 67 62 5f 79 63 63 |) {.X | rgb_ycc|
|00001240| 5f 74 61 62 5b 69 2b 52 | 5f 59 5f 4f 46 46 5d 20 |_tab[i+R|_Y_OFF] |
|00001250| 3d 20 46 49 58 28 30 2e | 32 39 39 30 30 29 20 2a |= FIX(0.|29900) *|
|00001260| 20 69 3b 0a 58 20 20 20 | 20 72 67 62 5f 79 63 63 | i;.X | rgb_ycc|
|00001270| 5f 74 61 62 5b 69 2b 47 | 5f 59 5f 4f 46 46 5d 20 |_tab[i+G|_Y_OFF] |
|00001280| 3d 20 46 49 58 28 30 2e | 35 38 37 30 30 29 20 2a |= FIX(0.|58700) *|
|00001290| 20 69 3b 0a 58 20 20 20 | 20 72 67 62 5f 79 63 63 | i;.X | rgb_ycc|
|000012a0| 5f 74 61 62 5b 69 2b 42 | 5f 59 5f 4f 46 46 5d 20 |_tab[i+B|_Y_OFF] |
|000012b0| 3d 20 46 49 58 28 30 2e | 31 31 34 30 30 29 20 2a |= FIX(0.|11400) *|
|000012c0| 20 69 20 20 20 20 20 2b | 20 4f 4e 45 5f 48 41 4c | i +| ONE_HAL|
|000012d0| 46 3b 0a 58 20 20 20 20 | 72 67 62 5f 79 63 63 5f |F;.X |rgb_ycc_|
|000012e0| 74 61 62 5b 69 2b 52 5f | 43 42 5f 4f 46 46 5d 20 |tab[i+R_|CB_OFF] |
|000012f0| 3d 20 28 2d 46 49 58 28 | 30 2e 31 36 38 37 34 29 |= (-FIX(|0.16874)|
|00001300| 29 20 2a 20 69 3b 0a 58 | 20 20 20 20 72 67 62 5f |) * i;.X| rgb_|
|00001310| 79 63 63 5f 74 61 62 5b | 69 2b 47 5f 43 42 5f 4f |ycc_tab[|i+G_CB_O|
|00001320| 46 46 5d 20 3d 20 28 2d | 46 49 58 28 30 2e 33 33 |FF] = (-|FIX(0.33|
|00001330| 31 32 36 29 29 20 2a 20 | 69 3b 0a 58 20 20 20 20 |126)) * |i;.X |
|00001340| 72 67 62 5f 79 63 63 5f | 74 61 62 5b 69 2b 42 5f |rgb_ycc_|tab[i+B_|
|00001350| 43 42 5f 4f 46 46 5d 20 | 3d 20 46 49 58 28 30 2e |CB_OFF] |= FIX(0.|
|00001360| 35 30 30 30 30 29 20 2a | 20 69 20 20 20 20 2b 20 |50000) *| i + |
|00001370| 4f 4e 45 5f 48 41 4c 46 | 2a 28 4d 41 58 4a 53 41 |ONE_HALF|*(MAXJSA|
|00001380| 4d 50 4c 45 2b 31 29 3b | 0a 58 2f 2a 20 20 42 3d |MPLE+1);|.X/* B=|
|00001390| 3e 43 62 20 61 6e 64 20 | 52 3d 3e 43 72 20 74 61 |>Cb and |R=>Cr ta|
|000013a0| 62 6c 65 73 20 61 72 65 | 20 74 68 65 20 73 61 6d |bles are| the sam|
|000013b0| 65 0a 58 20 20 20 20 72 | 67 62 5f 79 63 63 5f 74 |e.X r|gb_ycc_t|
|000013c0| 61 62 5b 69 2b 52 5f 43 | 52 5f 4f 46 46 5d 20 3d |ab[i+R_C|R_OFF] =|
|000013d0| 20 46 49 58 28 30 2e 35 | 30 30 30 30 29 20 2a 20 | FIX(0.5|0000) * |
|000013e0| 69 20 20 20 20 2b 20 4f | 4e 45 5f 48 41 4c 46 2a |i + O|NE_HALF*|
|000013f0| 28 4d 41 58 4a 53 41 4d | 50 4c 45 2b 31 29 3b 0a |(MAXJSAM|PLE+1);.|
|00001400| 58 2a 2f 0a 58 20 20 20 | 20 72 67 62 5f 79 63 63 |X*/.X | rgb_ycc|
|00001410| 5f 74 61 62 5b 69 2b 47 | 5f 43 52 5f 4f 46 46 5d |_tab[i+G|_CR_OFF]|
|00001420| 20 3d 20 28 2d 46 49 58 | 28 30 2e 34 31 38 36 39 | = (-FIX|(0.41869|
|00001430| 29 29 20 2a 20 69 3b 0a | 58 20 20 20 20 72 67 62 |)) * i;.|X rgb|
|00001440| 5f 79 63 63 5f 74 61 62 | 5b 69 2b 42 5f 43 52 5f |_ycc_tab|[i+B_CR_|
|00001450| 4f 46 46 5d 20 3d 20 28 | 2d 46 49 58 28 30 2e 30 |OFF] = (|-FIX(0.0|
|00001460| 38 31 33 31 29 29 20 2a | 20 69 3b 0a 58 20 20 7d |8131)) *| i;.X }|
|00001470| 0a 58 7d 0a 58 0a 58 0a | 58 2f 2a 0a 58 20 2a 20 |.X}.X.X.|X/*.X * |
|00001480| 46 65 74 63 68 20 73 6f | 6d 65 20 72 6f 77 73 20 |Fetch so|me rows |
|00001490| 6f 66 20 70 69 78 65 6c | 73 20 66 72 6f 6d 20 67 |of pixel|s from g|
|000014a0| 65 74 5f 69 6e 70 75 74 | 5f 72 6f 77 20 61 6e 64 |et_input|_row and|
|000014b0| 20 63 6f 6e 76 65 72 74 | 20 74 6f 20 74 68 65 0a | convert| to the.|
|000014c0| 58 20 2a 20 4a 50 45 47 | 20 63 6f 6c 6f 72 73 70 |X * JPEG| colorsp|
|000014d0| 61 63 65 2e 0a 58 20 2a | 2f 0a 58 0a 58 4d 45 54 |ace..X *|/.X.XMET|
|000014e0| 48 4f 44 44 45 46 20 76 | 6f 69 64 0a 58 67 65 74 |HODDEF v|oid.Xget|
|000014f0| 5f 72 67 62 5f 79 63 63 | 5f 72 6f 77 73 20 28 63 |_rgb_ycc|_rows (c|
|00001500| 6f 6d 70 72 65 73 73 5f | 69 6e 66 6f 5f 70 74 72 |ompress_|info_ptr|
|00001510| 20 63 69 6e 66 6f 2c 0a | 58 09 09 20 20 69 6e 74 | cinfo,.|X.. int|
|00001520| 20 72 6f 77 73 5f 74 6f | 5f 72 65 61 64 2c 20 4a | rows_to|_read, J|
|00001530| 53 41 4d 50 49 4d 41 47 | 45 20 69 6d 61 67 65 5f |SAMPIMAG|E image_|
|00001540| 64 61 74 61 29 0a 58 7b | 0a 58 23 69 66 64 65 66 |data).X{|.X#ifdef|
|00001550| 20 53 49 58 54 45 45 4e | 5f 42 49 54 5f 53 41 4d | SIXTEEN|_BIT_SAM|
|00001560| 50 4c 45 53 0a 58 20 20 | 72 65 67 69 73 74 65 72 |PLES.X |register|
|00001570| 20 55 49 4e 54 31 36 20 | 72 2c 20 67 2c 20 62 3b | UINT16 |r, g, b;|
|00001580| 0a 58 23 65 6c 73 65 0a | 58 20 20 72 65 67 69 73 |.X#else.|X regis|
|00001590| 74 65 72 20 69 6e 74 20 | 72 2c 20 67 2c 20 62 3b |ter int |r, g, b;|
|000015a0| 0a 58 23 65 6e 64 69 66 | 0a 58 20 20 72 65 67 69 |.X#endif|.X regi|
|000015b0| 73 74 65 72 20 49 4e 54 | 33 32 20 2a 20 63 74 61 |ster INT|32 * cta|
|000015c0| 62 20 3d 20 72 67 62 5f | 79 63 63 5f 74 61 62 3b |b = rgb_|ycc_tab;|
|000015d0| 0a 58 20 20 72 65 67 69 | 73 74 65 72 20 4a 53 41 |.X regi|ster JSA|
|000015e0| 4d 50 52 4f 57 20 69 6e | 70 74 72 30 2c 20 69 6e |MPROW in|ptr0, in|
|000015f0| 70 74 72 31 2c 20 69 6e | 70 74 72 32 3b 0a 58 20 |ptr1, in|ptr2;.X |
|00001600| 20 72 65 67 69 73 74 65 | 72 20 4a 53 41 4d 50 52 | registe|r JSAMPR|
|00001610| 4f 57 20 6f 75 74 70 74 | 72 30 2c 20 6f 75 74 70 |OW outpt|r0, outp|
|00001620| 74 72 31 2c 20 6f 75 74 | 70 74 72 32 3b 0a 58 20 |tr1, out|ptr2;.X |
|00001630| 20 72 65 67 69 73 74 65 | 72 20 6c 6f 6e 67 20 63 | registe|r long c|
|00001640| 6f 6c 3b 0a 58 20 20 6c | 6f 6e 67 20 77 69 64 74 |ol;.X l|ong widt|
|00001650| 68 20 3d 20 63 69 6e 66 | 6f 2d 3e 69 6d 61 67 65 |h = cinf|o->image|
|00001660| 5f 77 69 64 74 68 3b 0a | 58 20 20 69 6e 74 20 72 |_width;.|X int r|
|00001670| 6f 77 3b 0a 58 0a 58 20 | 20 66 6f 72 20 28 72 6f |ow;.X.X | for (ro|
|00001680| 77 20 3d 20 30 3b 20 72 | 6f 77 20 3c 20 72 6f 77 |w = 0; r|ow < row|
|00001690| 73 5f 74 6f 5f 72 65 61 | 64 3b 20 72 6f 77 2b 2b |s_to_rea|d; row++|
|000016a0| 29 20 7b 0a 58 20 20 20 | 20 2f 2a 20 52 65 61 64 |) {.X | /* Read|
|000016b0| 20 6f 6e 65 20 72 6f 77 | 20 66 72 6f 6d 20 74 68 | one row| from th|
|000016c0| 65 20 73 6f 75 72 63 65 | 20 66 69 6c 65 20 2a 2f |e source| file */|
|000016d0| 0a 58 20 20 20 20 28 2a | 63 69 6e 66 6f 2d 3e 6d |.X (*|cinfo->m|
|000016e0| 65 74 68 6f 64 73 2d 3e | 67 65 74 5f 69 6e 70 75 |ethods->|get_inpu|
|000016f0| 74 5f 72 6f 77 29 20 28 | 63 69 6e 66 6f 2c 20 70 |t_row) (|cinfo, p|
|00001700| 69 78 65 6c 5f 72 6f 77 | 29 3b 0a 58 20 20 20 20 |ixel_row|);.X |
|00001710| 2f 2a 20 43 6f 6e 76 65 | 72 74 20 63 6f 6c 6f 72 |/* Conve|rt color|
|00001720| 73 70 61 63 65 20 2a 2f | 0a 58 20 20 20 20 69 6e |space */|.X in|
|00001730| 70 74 72 30 20 3d 20 70 | 69 78 65 6c 5f 72 6f 77 |ptr0 = p|ixel_row|
|00001740| 5b 30 5d 3b 0a 58 20 20 | 20 20 69 6e 70 74 72 31 |[0];.X | inptr1|
|00001750| 20 3d 20 70 69 78 65 6c | 5f 72 6f 77 5b 31 5d 3b | = pixel|_row[1];|
|00001760| 0a 58 20 20 20 20 69 6e | 70 74 72 32 20 3d 20 70 |.X in|ptr2 = p|
|00001770| 69 78 65 6c 5f 72 6f 77 | 5b 32 5d 3b 0a 58 20 20 |ixel_row|[2];.X |
|00001780| 20 20 6f 75 74 70 74 72 | 30 20 3d 20 69 6d 61 67 | outptr|0 = imag|
|00001790| 65 5f 64 61 74 61 5b 30 | 5d 5b 72 6f 77 5d 3b 0a |e_data[0|][row];.|
|000017a0| 58 20 20 20 20 6f 75 74 | 70 74 72 31 20 3d 20 69 |X out|ptr1 = i|
|000017b0| 6d 61 67 65 5f 64 61 74 | 61 5b 31 5d 5b 72 6f 77 |mage_dat|a[1][row|
|000017c0| 5d 3b 0a 58 20 20 20 20 | 6f 75 74 70 74 72 32 20 |];.X |outptr2 |
|000017d0| 3d 20 69 6d 61 67 65 5f | 64 61 74 61 5b 32 5d 5b |= image_|data[2][|
|000017e0| 72 6f 77 5d 3b 0a 58 20 | 20 20 20 66 6f 72 20 28 |row];.X | for (|
|000017f0| 63 6f 6c 20 3d 20 30 3b | 20 63 6f 6c 20 3c 20 77 |col = 0;| col < w|
|00001800| 69 64 74 68 3b 20 63 6f | 6c 2b 2b 29 20 7b 0a 58 |idth; co|l++) {.X|
|00001810| 20 20 20 20 20 20 72 20 | 3d 20 47 45 54 4a 53 41 | r |= GETJSA|
|00001820| 4d 50 4c 45 28 69 6e 70 | 74 72 30 5b 63 6f 6c 5d |MPLE(inp|tr0[col]|
|00001830| 29 3b 0a 58 20 20 20 20 | 20 20 67 20 3d 20 47 45 |);.X | g = GE|
|00001840| 54 4a 53 41 4d 50 4c 45 | 28 69 6e 70 74 72 31 5b |TJSAMPLE|(inptr1[|
|00001850| 63 6f 6c 5d 29 3b 0a 58 | 20 20 20 20 20 20 62 20 |col]);.X| b |
|00001860| 3d 20 47 45 54 4a 53 41 | 4d 50 4c 45 28 69 6e 70 |= GETJSA|MPLE(inp|
|00001870| 74 72 32 5b 63 6f 6c 5d | 29 3b 0a 58 20 20 20 20 |tr2[col]|);.X |
|00001880| 20 20 2f 2a 20 49 66 20 | 74 68 65 20 69 6e 70 75 | /* If |the inpu|
|00001890| 74 73 20 61 72 65 20 30 | 2e 2e 4d 41 58 4a 53 41 |ts are 0|..MAXJSA|
|000018a0| 4d 50 4c 45 2c 20 74 68 | 65 20 6f 75 74 70 75 74 |MPLE, th|e output|
|000018b0| 73 20 6f 66 20 74 68 65 | 73 65 20 65 71 75 61 74 |s of the|se equat|
|000018c0| 69 6f 6e 73 0a 58 20 20 | 20 20 20 20 20 2a 20 6d |ions.X | * m|
|000018d0| 75 73 74 20 62 65 20 74 | 6f 6f 3b 20 77 65 20 64 |ust be t|oo; we d|
|000018e0| 6f 20 6e 6f 74 20 6e 65 | 65 64 20 61 6e 20 65 78 |o not ne|ed an ex|
|000018f0| 70 6c 69 63 69 74 20 72 | 61 6e 67 65 2d 6c 69 6d |plicit r|ange-lim|
|00001900| 69 74 69 6e 67 20 6f 70 | 65 72 61 74 69 6f 6e 2e |iting op|eration.|
|00001910| 0a 58 20 20 20 20 20 20 | 20 2a 20 48 65 6e 63 65 |.X | * Hence|
|00001920| 20 74 68 65 20 76 61 6c | 75 65 20 62 65 69 6e 67 | the val|ue being|
|00001930| 20 73 68 69 66 74 65 64 | 20 69 73 20 6e 65 76 65 | shifted| is neve|
|00001940| 72 20 6e 65 67 61 74 69 | 76 65 2c 20 61 6e 64 20 |r negati|ve, and |
|00001950| 77 65 20 64 6f 6e 27 74 | 0a 58 20 20 20 20 20 20 |we don't|.X |
|00001960| 20 2a 20 6e 65 65 64 20 | 74 68 65 20 67 65 6e 65 | * need |the gene|
|00001970| 72 61 6c 20 52 49 47 48 | 54 5f 53 48 49 46 54 20 |ral RIGH|T_SHIFT |
|00001980| 6d 61 63 72 6f 2e 0a 58 | 20 20 20 20 20 20 20 2a |macro..X| *|
|00001990| 2f 0a 58 20 20 20 20 20 | 20 2f 2a 20 59 20 2a 2f |/.X | /* Y */|
|000019a0| 0a 58 20 20 20 20 20 20 | 6f 75 74 70 74 72 30 5b |.X |outptr0[|
|000019b0| 63 6f 6c 5d 20 3d 20 28 | 4a 53 41 4d 50 4c 45 29 |col] = (|JSAMPLE)|
|000019c0| 0a 58 09 09 28 28 63 74 | 61 62 5b 72 2b 52 5f 59 |.X..((ct|ab[r+R_Y|
|000019d0| 5f 4f 46 46 5d 20 2b 20 | 63 74 61 62 5b 67 2b 47 |_OFF] + |ctab[g+G|
|000019e0| 5f 59 5f 4f 46 46 5d 20 | 2b 20 63 74 61 62 5b 62 |_Y_OFF] |+ ctab[b|
|000019f0| 2b 42 5f 59 5f 4f 46 46 | 5d 29 0a 58 09 09 20 3e |+B_Y_OFF|]).X.. >|
|00001a00| 3e 20 53 43 41 4c 45 42 | 49 54 53 29 3b 0a 58 20 |> SCALEB|ITS);.X |
|00001a10| 20 20 20 20 20 2f 2a 20 | 43 62 20 2a 2f 0a 58 20 | /* |Cb */.X |
|00001a20| 20 20 20 20 20 6f 75 74 | 70 74 72 31 5b 63 6f 6c | out|ptr1[col|
|00001a30| 5d 20 3d 20 28 4a 53 41 | 4d 50 4c 45 29 0a 58 09 |] = (JSA|MPLE).X.|
|00001a40| 09 28 28 63 74 61 62 5b | 72 2b 52 5f 43 42 5f 4f |.((ctab[|r+R_CB_O|
|00001a50| 46 46 5d 20 2b 20 63 74 | 61 62 5b 67 2b 47 5f 43 |FF] + ct|ab[g+G_C|
|00001a60| 42 5f 4f 46 46 5d 20 2b | 20 63 74 61 62 5b 62 2b |B_OFF] +| ctab[b+|
|00001a70| 42 5f 43 42 5f 4f 46 46 | 5d 29 0a 58 09 09 20 3e |B_CB_OFF|]).X.. >|
|00001a80| 3e 20 53 43 41 4c 45 42 | 49 54 53 29 3b 0a 58 20 |> SCALEB|ITS);.X |
|00001a90| 20 20 20 20 20 2f 2a 20 | 43 72 20 2a 2f 0a 58 20 | /* |Cr */.X |
|00001aa0| 20 20 20 20 20 6f 75 74 | 70 74 72 32 5b 63 6f 6c | out|ptr2[col|
|00001ab0| 5d 20 3d 20 28 4a 53 41 | 4d 50 4c 45 29 0a 58 09 |] = (JSA|MPLE).X.|
|00001ac0| 09 28 28 63 74 61 62 5b | 72 2b 52 5f 43 52 5f 4f |.((ctab[|r+R_CR_O|
|00001ad0| 46 46 5d 20 2b 20 63 74 | 61 62 5b 67 2b 47 5f 43 |FF] + ct|ab[g+G_C|
|00001ae0| 52 5f 4f 46 46 5d 20 2b | 20 63 74 61 62 5b 62 2b |R_OFF] +| ctab[b+|
|00001af0| 42 5f 43 52 5f 4f 46 46 | 5d 29 0a 58 09 09 20 3e |B_CR_OFF|]).X.. >|
|00001b00| 3e 20 53 43 41 4c 45 42 | 49 54 53 29 3b 0a 58 20 |> SCALEB|ITS);.X |
|00001b10| 20 20 20 7d 0a 58 20 20 | 7d 0a 58 7d 0a 58 0a 58 | }.X |}.X}.X.X|
|00001b20| 0a 58 2f 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X/*****|********|
|00001b30| 2a 2a 2a 20 43 61 73 65 | 73 20 6f 74 68 65 72 20 |*** Case|s other |
|00001b40| 74 68 61 6e 20 52 47 42 | 20 2d 3e 20 59 43 62 43 |than RGB| -> YCbC|
|00001b50| 72 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |r ******|********|
|00001b60| 2f 0a 58 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 46 65 |/.X.X.X/|*.X * Fe|
|00001b70| 74 63 68 20 73 6f 6d 65 | 20 72 6f 77 73 20 6f 66 |tch some| rows of|
|00001b80| 20 70 69 78 65 6c 73 20 | 66 72 6f 6d 20 67 65 74 | pixels |from get|
|00001b90| 5f 69 6e 70 75 74 5f 72 | 6f 77 20 61 6e 64 20 63 |_input_r|ow and c|
|00001ba0| 6f 6e 76 65 72 74 20 74 | 6f 20 74 68 65 0a 58 20 |onvert t|o the.X |
|00001bb0| 2a 20 4a 50 45 47 20 63 | 6f 6c 6f 72 73 70 61 63 |* JPEG c|olorspac|
|00001bc0| 65 2e 0a 58 20 2a 20 54 | 68 69 73 20 76 65 72 73 |e..X * T|his vers|
|00001bd0| 69 6f 6e 20 68 61 6e 64 | 6c 65 73 20 52 47 42 2d |ion hand|les RGB-|
|00001be0| 3e 67 72 61 79 73 63 61 | 6c 65 20 63 6f 6e 76 65 |>graysca|le conve|
|00001bf0| 72 73 69 6f 6e 2c 20 77 | 68 69 63 68 20 69 73 20 |rsion, w|hich is |
|00001c00| 74 68 65 20 73 61 6d 65 | 0a 58 20 2a 20 61 73 20 |the same|.X * as |
|00001c10| 74 68 65 20 52 47 42 2d | 3e 59 20 70 6f 72 74 69 |the RGB-|>Y porti|
|00001c20| 6f 6e 20 6f 66 20 52 47 | 42 2d 3e 59 43 62 43 72 |on of RG|B->YCbCr|
|00001c30| 2e 0a 58 20 2a 20 57 65 | 20 61 73 73 75 6d 65 20 |..X * We| assume |
|00001c40| 72 67 62 5f 79 63 63 5f | 69 6e 69 74 20 68 61 73 |rgb_ycc_|init has|
|00001c50| 20 62 65 65 6e 20 63 61 | 6c 6c 65 64 20 28 77 65 | been ca|lled (we|
|00001c60| 20 6f 6e 6c 79 20 75 73 | 65 20 74 68 65 20 59 20 | only us|e the Y |
|00001c70| 74 61 62 6c 65 73 29 2e | 0a 58 20 2a 2f 0a 58 0a |tables).|.X */.X.|
|00001c80| 58 4d 45 54 48 4f 44 44 | 45 46 20 76 6f 69 64 0a |XMETHODD|EF void.|
|00001c90| 58 67 65 74 5f 72 67 62 | 5f 67 72 61 79 5f 72 6f |Xget_rgb|_gray_ro|
|00001ca0| 77 73 20 28 63 6f 6d 70 | 72 65 73 73 5f 69 6e 66 |ws (comp|ress_inf|
|00001cb0| 6f 5f 70 74 72 20 63 69 | 6e 66 6f 2c 0a 58 09 09 |o_ptr ci|nfo,.X..|
|00001cc0| 20 20 20 69 6e 74 20 72 | 6f 77 73 5f 74 6f 5f 72 | int r|ows_to_r|
|00001cd0| 65 61 64 2c 20 4a 53 41 | 4d 50 49 4d 41 47 45 20 |ead, JSA|MPIMAGE |
|00001ce0| 69 6d 61 67 65 5f 64 61 | 74 61 29 0a 58 7b 0a 58 |image_da|ta).X{.X|
|00001cf0| 23 69 66 64 65 66 20 53 | 49 58 54 45 45 4e 5f 42 |#ifdef S|IXTEEN_B|
|00001d00| 49 54 5f 53 41 4d 50 4c | 45 53 0a 58 20 20 72 65 |IT_SAMPL|ES.X re|
|00001d10| 67 69 73 74 65 72 20 55 | 49 4e 54 31 36 20 72 2c |gister U|INT16 r,|
|00001d20| 20 67 2c 20 62 3b 0a 58 | 23 65 6c 73 65 0a 58 20 | g, b;.X|#else.X |
|00001d30| 20 72 65 67 69 73 74 65 | 72 20 69 6e 74 20 72 2c | registe|r int r,|
|00001d40| 20 67 2c 20 62 3b 0a 58 | 23 65 6e 64 69 66 0a 58 | g, b;.X|#endif.X|
|00001d50| 20 20 72 65 67 69 73 74 | 65 72 20 49 4e 54 33 32 | regist|er INT32|
|00001d60| 20 2a 20 63 74 61 62 20 | 3d 20 72 67 62 5f 79 63 | * ctab |= rgb_yc|
|00001d70| 63 5f 74 61 62 3b 0a 58 | 20 20 72 65 67 69 73 74 |c_tab;.X| regist|
|00001d80| 65 72 20 4a 53 41 4d 50 | 52 4f 57 20 69 6e 70 74 |er JSAMP|ROW inpt|
|00001d90| 72 30 2c 20 69 6e 70 74 | 72 31 2c 20 69 6e 70 74 |r0, inpt|r1, inpt|
|00001da0| 72 32 3b 0a 58 20 20 72 | 65 67 69 73 74 65 72 20 |r2;.X r|egister |
|00001db0| 4a 53 41 4d 50 52 4f 57 | 20 6f 75 74 70 74 72 3b |JSAMPROW| outptr;|
|00001dc0| 0a 58 20 20 72 65 67 69 | 73 74 65 72 20 6c 6f 6e |.X regi|ster lon|
|00001dd0| 67 20 63 6f 6c 3b 0a 58 | 20 20 6c 6f 6e 67 20 77 |g col;.X| long w|
|00001de0| 69 64 74 68 20 3d 20 63 | 69 6e 66 6f 2d 3e 69 6d |idth = c|info->im|
|00001df0| 61 67 65 5f 77 69 64 74 | 68 3b 0a 58 20 20 69 6e |age_widt|h;.X in|
|00001e00| 74 20 72 6f 77 3b 0a 58 | 0a 58 20 20 66 6f 72 20 |t row;.X|.X for |
|00001e10| 28 72 6f 77 20 3d 20 30 | 3b 20 72 6f 77 20 3c 20 |(row = 0|; row < |
|00001e20| 72 6f 77 73 5f 74 6f 5f | 72 65 61 64 3b 20 72 6f |rows_to_|read; ro|
|00001e30| 77 2b 2b 29 20 7b 0a 58 | 20 20 20 20 2f 2a 20 52 |w++) {.X| /* R|
|00001e40| 65 61 64 20 6f 6e 65 20 | 72 6f 77 20 66 72 6f 6d |ead one |row from|
|00001e50| 20 74 68 65 20 73 6f 75 | 72 63 65 20 66 69 6c 65 | the sou|rce file|
|00001e60| 20 2a 2f 0a 58 20 20 20 | 20 28 2a 63 69 6e 66 6f | */.X | (*cinfo|
|00001e70| 2d 3e 6d 65 74 68 6f 64 | 73 2d 3e 67 65 74 5f 69 |->method|s->get_i|
|00001e80| 6e 70 75 74 5f 72 6f 77 | 29 20 28 63 69 6e 66 6f |nput_row|) (cinfo|
|00001e90| 2c 20 70 69 78 65 6c 5f | 72 6f 77 29 3b 0a 58 20 |, pixel_|row);.X |
|00001ea0| 20 20 20 2f 2a 20 43 6f | 6e 76 65 72 74 20 63 6f | /* Co|nvert co|
|00001eb0| 6c 6f 72 73 70 61 63 65 | 20 2a 2f 0a 58 20 20 20 |lorspace| */.X |
|00001ec0| 20 69 6e 70 74 72 30 20 | 3d 20 70 69 78 65 6c 5f | inptr0 |= pixel_|
|00001ed0| 72 6f 77 5b 30 5d 3b 0a | 58 20 20 20 20 69 6e 70 |row[0];.|X inp|
|00001ee0| 74 72 31 20 3d 20 70 69 | 78 65 6c 5f 72 6f 77 5b |tr1 = pi|xel_row[|
|00001ef0| 31 5d 3b 0a 58 20 20 20 | 20 69 6e 70 74 72 32 20 |1];.X | inptr2 |
|00001f00| 3d 20 70 69 78 65 6c 5f | 72 6f 77 5b 32 5d 3b 0a |= pixel_|row[2];.|
|00001f10| 58 20 20 20 20 6f 75 74 | 70 74 72 20 3d 20 69 6d |X out|ptr = im|
|00001f20| 61 67 65 5f 64 61 74 61 | 5b 30 5d 5b 72 6f 77 5d |age_data|[0][row]|
|00001f30| 3b 0a 58 20 20 20 20 66 | 6f 72 20 28 63 6f 6c 20 |;.X f|or (col |
|00001f40| 3d 20 30 3b 20 63 6f 6c | 20 3c 20 77 69 64 74 68 |= 0; col| < width|
|00001f50| 3b 20 63 6f 6c 2b 2b 29 | 20 7b 0a 58 20 20 20 20 |; col++)| {.X |
|00001f60| 20 20 72 20 3d 20 47 45 | 54 4a 53 41 4d 50 4c 45 | r = GE|TJSAMPLE|
|00001f70| 28 69 6e 70 74 72 30 5b | 63 6f 6c 5d 29 3b 0a 58 |(inptr0[|col]);.X|
|00001f80| 20 20 20 20 20 20 67 20 | 3d 20 47 45 54 4a 53 41 | g |= GETJSA|
|00001f90| 4d 50 4c 45 28 69 6e 70 | 74 72 31 5b 63 6f 6c 5d |MPLE(inp|tr1[col]|
|00001fa0| 29 3b 0a 58 20 20 20 20 | 20 20 62 20 3d 20 47 45 |);.X | b = GE|
|00001fb0| 54 4a 53 41 4d 50 4c 45 | 28 69 6e 70 74 72 32 5b |TJSAMPLE|(inptr2[|
|00001fc0| 63 6f 6c 5d 29 3b 0a 58 | 20 20 20 20 20 20 2f 2a |col]);.X| /*|
|00001fd0| 20 49 66 20 74 68 65 20 | 69 6e 70 75 74 73 20 61 | If the |inputs a|
|00001fe0| 72 65 20 30 2e 2e 4d 41 | 58 4a 53 41 4d 50 4c 45 |re 0..MA|XJSAMPLE|
|00001ff0| 2c 20 74 68 65 20 6f 75 | 74 70 75 74 73 20 6f 66 |, the ou|tputs of|
|00002000| 20 74 68 65 73 65 20 65 | 71 75 61 74 69 6f 6e 73 | these e|quations|
|00002010| 0a 58 20 20 20 20 20 20 | 20 2a 20 6d 75 73 74 20 |.X | * must |
|00002020| 62 65 20 74 6f 6f 3b 20 | 77 65 20 64 6f 20 6e 6f |be too; |we do no|
|00002030| 74 20 6e 65 65 64 20 61 | 6e 20 65 78 70 6c 69 63 |t need a|n explic|
|00002040| 69 74 20 72 61 6e 67 65 | 2d 6c 69 6d 69 74 69 6e |it range|-limitin|
|00002050| 67 20 6f 70 65 72 61 74 | 69 6f 6e 2e 0a 58 20 20 |g operat|ion..X |
|00002060| 20 20 20 20 20 2a 20 48 | 65 6e 63 65 20 74 68 65 | * H|ence the|
|00002070| 20 76 61 6c 75 65 20 62 | 65 69 6e 67 20 73 68 69 | value b|eing shi|
|00002080| 66 74 65 64 20 69 73 20 | 6e 65 76 65 72 20 6e 65 |fted is |never ne|
|00002090| 67 61 74 69 76 65 2c 20 | 61 6e 64 20 77 65 20 64 |gative, |and we d|
|000020a0| 6f 6e 27 74 0a 58 20 20 | 20 20 20 20 20 2a 20 6e |on't.X | * n|
|000020b0| 65 65 64 20 74 68 65 20 | 67 65 6e 65 72 61 6c 20 |eed the |general |
|000020c0| 52 49 47 48 54 5f 53 48 | 49 46 54 20 6d 61 63 72 |RIGHT_SH|IFT macr|
|000020d0| 6f 2e 0a 58 20 20 20 20 | 20 20 20 2a 2f 0a 58 20 |o..X | */.X |
|000020e0| 20 20 20 20 20 2f 2a 20 | 59 20 2a 2f 0a 58 20 20 | /* |Y */.X |
|000020f0| 20 20 20 20 6f 75 74 70 | 74 72 5b 63 6f 6c 5d 20 | outp|tr[col] |
|00002100| 3d 20 28 4a 53 41 4d 50 | 4c 45 29 0a 58 09 09 28 |= (JSAMP|LE).X..(|
|00002110| 28 63 74 61 62 5b 72 2b | 52 5f 59 5f 4f 46 46 5d |(ctab[r+|R_Y_OFF]|
|00002120| 20 2b 20 63 74 61 62 5b | 67 2b 47 5f 59 5f 4f 46 | + ctab[|g+G_Y_OF|
|00002130| 46 5d 20 2b 20 63 74 61 | 62 5b 62 2b 42 5f 59 5f |F] + cta|b[b+B_Y_|
|00002140| 4f 46 46 5d 29 0a 58 09 | 09 20 3e 3e 20 53 43 41 |OFF]).X.|. >> SCA|
|00002150| 4c 45 42 49 54 53 29 3b | 0a 58 20 20 20 20 7d 0a |LEBITS);|.X }.|
|00002160| 58 20 20 7d 0a 58 7d 0a | 58 0a 58 0a 58 2f 2a 0a |X }.X}.|X.X.X/*.|
|00002170| 58 20 2a 20 49 6e 69 74 | 69 61 6c 69 7a 65 20 66 |X * Init|ialize f|
|00002180| 6f 72 20 63 6f 6c 6f 72 | 73 70 61 63 65 20 63 6f |or color|space co|
|00002190| 6e 76 65 72 73 69 6f 6e | 2e 0a 58 20 2a 2f 0a 58 |nversion|..X */.X|
|000021a0| 0a 58 4d 45 54 48 4f 44 | 44 45 46 20 76 6f 69 64 |.XMETHOD|DEF void|
|000021b0| 0a 58 63 6f 6c 6f 72 69 | 6e 5f 69 6e 69 74 20 28 |.Xcolori|n_init (|
|000021c0| 63 6f 6d 70 72 65 73 73 | 5f 69 6e 66 6f 5f 70 74 |compress|_info_pt|
|000021d0| 72 20 63 69 6e 66 6f 29 | 0a 58 7b 0a 58 20 20 2f |r cinfo)|.X{.X /|
|000021e0| 2a 20 41 6c 6c 6f 63 61 | 74 65 20 61 20 77 6f 72 |* Alloca|te a wor|
|000021f0| 6b 73 70 61 63 65 20 66 | 6f 72 20 74 68 65 20 72 |kspace f|or the r|
|00002200| 65 73 75 6c 74 20 6f 66 | 20 67 65 74 5f 69 6e 70 |esult of| get_inp|
|00002210| 75 74 5f 72 6f 77 2e 20 | 2a 2f 0a 58 20 20 70 69 |ut_row. |*/.X pi|
|00002220| 78 65 6c 5f 72 6f 77 20 | 3d 20 28 2a 63 69 6e 66 |xel_row |= (*cinf|
|00002230| 6f 2d 3e 65 6d 65 74 68 | 6f 64 73 2d 3e 61 6c 6c |o->emeth|ods->all|
|00002240| 6f 63 5f 73 6d 61 6c 6c | 5f 73 61 72 72 61 79 29 |oc_small|_sarray)|
|00002250| 0a 58 09 09 28 63 69 6e | 66 6f 2d 3e 69 6d 61 67 |.X..(cin|fo->imag|
|00002260| 65 5f 77 69 64 74 68 2c | 20 28 6c 6f 6e 67 29 20 |e_width,| (long) |
|00002270| 63 69 6e 66 6f 2d 3e 69 | 6e 70 75 74 5f 63 6f 6d |cinfo->i|nput_com|
|00002280| 70 6f 6e 65 6e 74 73 29 | 3b 0a 58 7d 0a 58 0a 58 |ponents)|;.X}.X.X|
|00002290| 0a 58 2f 2a 0a 58 20 2a | 20 46 65 74 63 68 20 73 |.X/*.X *| Fetch s|
|000022a0| 6f 6d 65 20 72 6f 77 73 | 20 6f 66 20 70 69 78 65 |ome rows| of pixe|
|000022b0| 6c 73 20 66 72 6f 6d 20 | 67 65 74 5f 69 6e 70 75 |ls from |get_inpu|
|000022c0| 74 5f 72 6f 77 20 61 6e | 64 20 63 6f 6e 76 65 72 |t_row an|d conver|
|000022d0| 74 20 74 6f 20 74 68 65 | 0a 58 20 2a 20 4a 50 45 |t to the|.X * JPE|
|000022e0| 47 20 63 6f 6c 6f 72 73 | 70 61 63 65 2e 0a 58 20 |G colors|pace..X |
|000022f0| 2a 20 54 68 69 73 20 76 | 65 72 73 69 6f 6e 20 68 |* This v|ersion h|
|00002300| 61 6e 64 6c 65 73 20 67 | 72 61 79 73 63 61 6c 65 |andles g|rayscale|
|00002310| 20 6f 75 74 70 75 74 20 | 77 69 74 68 20 6e 6f 20 | output |with no |
|00002320| 63 6f 6e 76 65 72 73 69 | 6f 6e 2e 0a 58 20 2a 20 |conversi|on..X * |
|00002330| 54 68 65 20 73 6f 75 72 | 63 65 20 63 61 6e 20 62 |The sour|ce can b|
|00002340| 65 20 65 69 74 68 65 72 | 20 70 6c 61 69 6e 20 67 |e either| plain g|
|00002350| 72 61 79 73 63 61 6c 65 | 20 6f 72 20 59 43 62 43 |rayscale| or YCbC|
|00002360| 72 20 28 73 69 6e 63 65 | 20 59 20 3d 3d 20 67 72 |r (since| Y == gr|
|00002370| 61 79 29 2e 0a 58 20 2a | 2f 0a 58 0a 58 4d 45 54 |ay)..X *|/.X.XMET|
|00002380| 48 4f 44 44 45 46 20 76 | 6f 69 64 0a 58 67 65 74 |HODDEF v|oid.Xget|
|00002390| 5f 67 72 61 79 73 63 61 | 6c 65 5f 72 6f 77 73 20 |_graysca|le_rows |
|000023a0| 28 63 6f 6d 70 72 65 73 | 73 5f 69 6e 66 6f 5f 70 |(compres|s_info_p|
|000023b0| 74 72 20 63 69 6e 66 6f | 2c 0a 58 09 09 20 20 20 |tr cinfo|,.X.. |
|000023c0| 20 69 6e 74 20 72 6f 77 | 73 5f 74 6f 5f 72 65 61 | int row|s_to_rea|
|000023d0| 64 2c 20 4a 53 41 4d 50 | 49 4d 41 47 45 20 69 6d |d, JSAMP|IMAGE im|
|000023e0| 61 67 65 5f 64 61 74 61 | 29 0a 58 7b 0a 58 20 20 |age_data|).X{.X |
|000023f0| 69 6e 74 20 72 6f 77 3b | 0a 58 0a 58 20 20 66 6f |int row;|.X.X fo|
|00002400| 72 20 28 72 6f 77 20 3d | 20 30 3b 20 72 6f 77 20 |r (row =| 0; row |
|00002410| 3c 20 72 6f 77 73 5f 74 | 6f 5f 72 65 61 64 3b 20 |< rows_t|o_read; |
|00002420| 72 6f 77 2b 2b 29 20 7b | 0a 58 20 20 20 20 2f 2a |row++) {|.X /*|
|00002430| 20 52 65 61 64 20 6f 6e | 65 20 72 6f 77 20 66 72 | Read on|e row fr|
|00002440| 6f 6d 20 74 68 65 20 73 | 6f 75 72 63 65 20 66 69 |om the s|ource fi|
|00002450| 6c 65 20 2a 2f 0a 58 20 | 20 20 20 28 2a 63 69 6e |le */.X | (*cin|
|00002460| 66 6f 2d 3e 6d 65 74 68 | 6f 64 73 2d 3e 67 65 74 |fo->meth|ods->get|
|00002470| 5f 69 6e 70 75 74 5f 72 | 6f 77 29 20 28 63 69 6e |_input_r|ow) (cin|
|00002480| 66 6f 2c 20 70 69 78 65 | 6c 5f 72 6f 77 29 3b 0a |fo, pixe|l_row);.|
|00002490| 58 20 20 20 20 2f 2a 20 | 43 6f 6e 76 65 72 74 20 |X /* |Convert |
|000024a0| 63 6f 6c 6f 72 73 70 61 | 63 65 20 28 67 61 6d 6d |colorspa|ce (gamm|
|000024b0| 61 20 6d 61 70 70 69 6e | 67 20 6e 65 65 64 65 64 |a mappin|g needed|
|000024c0| 20 68 65 72 65 29 20 2a | 2f 0a 58 20 20 20 20 6a | here) *|/.X j|
|000024d0| 63 6f 70 79 5f 73 61 6d | 70 6c 65 5f 72 6f 77 73 |copy_sam|ple_rows|
|000024e0| 28 70 69 78 65 6c 5f 72 | 6f 77 2c 20 30 2c 20 69 |(pixel_r|ow, 0, i|
|000024f0| 6d 61 67 65 5f 64 61 74 | 61 5b 30 5d 2c 20 72 6f |mage_dat|a[0], ro|
|00002500| 77 2c 0a 58 09 09 20 20 | 20 20 20 20 31 2c 20 63 |w,.X.. | 1, c|
|00002510| 69 6e 66 6f 2d 3e 69 6d | 61 67 65 5f 77 69 64 74 |info->im|age_widt|
|00002520| 68 29 3b 0a 58 20 20 7d | 0a 58 7d 0a 58 0a 58 0a |h);.X }|.X}.X.X.|
|00002530| 58 2f 2a 0a 58 20 2a 20 | 46 65 74 63 68 20 73 6f |X/*.X * |Fetch so|
|00002540| 6d 65 20 72 6f 77 73 20 | 6f 66 20 70 69 78 65 6c |me rows |of pixel|
|00002550| 73 20 66 72 6f 6d 20 67 | 65 74 5f 69 6e 70 75 74 |s from g|et_input|
|00002560| 5f 72 6f 77 20 61 6e 64 | 20 63 6f 6e 76 65 72 74 |_row and| convert|
|00002570| 20 74 6f 20 74 68 65 0a | 58 20 2a 20 4a 50 45 47 | to the.|X * JPEG|
|00002580| 20 63 6f 6c 6f 72 73 70 | 61 63 65 2e 0a 58 20 2a | colorsp|ace..X *|
|00002590| 20 54 68 69 73 20 76 65 | 72 73 69 6f 6e 20 68 61 | This ve|rsion ha|
|000025a0| 6e 64 6c 65 73 20 6d 75 | 6c 74 69 2d 63 6f 6d 70 |ndles mu|lti-comp|
|000025b0| 6f 6e 65 6e 74 20 63 6f | 6c 6f 72 73 70 61 63 65 |onent co|lorspace|
|000025c0| 73 20 77 69 74 68 6f 75 | 74 20 63 6f 6e 76 65 72 |s withou|t conver|
|000025d0| 73 69 6f 6e 2e 0a 58 20 | 2a 2f 0a 58 0a 58 4d 45 |sion..X |*/.X.XME|
|000025e0| 54 48 4f 44 44 45 46 20 | 76 6f 69 64 0a 58 67 65 |THODDEF |void.Xge|
|000025f0| 74 5f 6e 6f 63 6f 6e 76 | 65 72 74 5f 72 6f 77 73 |t_noconv|ert_rows|
|00002600| 20 28 63 6f 6d 70 72 65 | 73 73 5f 69 6e 66 6f 5f | (compre|ss_info_|
|00002610| 70 74 72 20 63 69 6e 66 | 6f 2c 0a 58 09 09 20 20 |ptr cinf|o,.X.. |
|00002620| 20 20 69 6e 74 20 72 6f | 77 73 5f 74 6f 5f 72 65 | int ro|ws_to_re|
|00002630| 61 64 2c 20 4a 53 41 4d | 50 49 4d 41 47 45 20 69 |ad, JSAM|PIMAGE i|
|00002640| 6d 61 67 65 5f 64 61 74 | 61 29 0a 58 7b 0a 58 20 |mage_dat|a).X{.X |
|00002650| 20 69 6e 74 20 72 6f 77 | 2c 20 63 69 3b 0a 58 0a | int row|, ci;.X.|
|00002660| 58 20 20 66 6f 72 20 28 | 72 6f 77 20 3d 20 30 3b |X for (|row = 0;|
|00002670| 20 72 6f 77 20 3c 20 72 | 6f 77 73 5f 74 6f 5f 72 | row < r|ows_to_r|
|00002680| 65 61 64 3b 20 72 6f 77 | 2b 2b 29 20 7b 0a 58 20 |ead; row|++) {.X |
|00002690| 20 20 20 2f 2a 20 52 65 | 61 64 20 6f 6e 65 20 72 | /* Re|ad one r|
|000026a0| 6f 77 20 66 72 6f 6d 20 | 74 68 65 20 73 6f 75 72 |ow from |the sour|
|000026b0| 63 65 20 66 69 6c 65 20 | 2a 2f 0a 58 20 20 20 20 |ce file |*/.X |
|000026c0| 28 2a 63 69 6e 66 6f 2d | 3e 6d 65 74 68 6f 64 73 |(*cinfo-|>methods|
|000026d0| 2d 3e 67 65 74 5f 69 6e | 70 75 74 5f 72 6f 77 29 |->get_in|put_row)|
|000026e0| 20 28 63 69 6e 66 6f 2c | 20 70 69 78 65 6c 5f 72 | (cinfo,| pixel_r|
|000026f0| 6f 77 29 3b 0a 58 20 20 | 20 20 2f 2a 20 43 6f 6e |ow);.X | /* Con|
|00002700| 76 65 72 74 20 63 6f 6c | 6f 72 73 70 61 63 65 20 |vert col|orspace |
|00002710| 28 67 61 6d 6d 61 20 6d | 61 70 70 69 6e 67 20 6e |(gamma m|apping n|
|00002720| 65 65 64 65 64 20 68 65 | 72 65 29 20 2a 2f 0a 58 |eeded he|re) */.X|
|00002730| 20 20 20 20 66 6f 72 20 | 28 63 69 20 3d 20 30 3b | for |(ci = 0;|
|00002740| 20 63 69 20 3c 20 63 69 | 6e 66 6f 2d 3e 69 6e 70 | ci < ci|nfo->inp|
|00002750| 75 74 5f 63 6f 6d 70 6f | 6e 65 6e 74 73 3b 20 63 |ut_compo|nents; c|
|00002760| 69 2b 2b 29 20 7b 0a 58 | 20 20 20 20 20 20 6a 63 |i++) {.X| jc|
|00002770| 6f 70 79 5f 73 61 6d 70 | 6c 65 5f 72 6f 77 73 28 |opy_samp|le_rows(|
|00002780| 70 69 78 65 6c 5f 72 6f | 77 2c 20 63 69 2c 20 69 |pixel_ro|w, ci, i|
|00002790| 6d 61 67 65 5f 64 61 74 | 61 5b 63 69 5d 2c 20 72 |mage_dat|a[ci], r|
|000027a0| 6f 77 2c 0a 58 09 09 09 | 31 2c 20 63 69 6e 66 6f |ow,.X...|1, cinfo|
|000027b0| 2d 3e 69 6d 61 67 65 5f | 77 69 64 74 68 29 3b 0a |->image_|width);.|
|000027c0| 58 20 20 20 20 7d 0a 58 | 20 20 7d 0a 58 7d 0a 58 |X }.X| }.X}.X|
|000027d0| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 46 69 6e 69 73 |.X.X/*.X| * Finis|
|000027e0| 68 20 75 70 20 61 74 20 | 74 68 65 20 65 6e 64 20 |h up at |the end |
|000027f0| 6f 66 20 74 68 65 20 66 | 69 6c 65 2e 0a 58 20 2a |of the f|ile..X *|
|00002800| 2f 0a 58 0a 58 4d 45 54 | 48 4f 44 44 45 46 20 76 |/.X.XMET|HODDEF v|
|00002810| 6f 69 64 0a 58 63 6f 6c | 6f 72 69 6e 5f 74 65 72 |oid.Xcol|orin_ter|
|00002820| 6d 20 28 63 6f 6d 70 72 | 65 73 73 5f 69 6e 66 6f |m (compr|ess_info|
|00002830| 5f 70 74 72 20 63 69 6e | 66 6f 29 0a 58 7b 0a 58 |_ptr cin|fo).X{.X|
|00002840| 20 20 2f 2a 20 6e 6f 20 | 77 6f 72 6b 20 28 77 65 | /* no |work (we|
|00002850| 20 6c 65 74 20 66 72 65 | 65 5f 61 6c 6c 20 72 65 | let fre|e_all re|
|00002860| 6c 65 61 73 65 20 74 68 | 65 20 77 6f 72 6b 73 70 |lease th|e worksp|
|00002870| 61 63 65 29 20 2a 2f 0a | 58 7d 0a 58 0a 58 0a 58 |ace) */.|X}.X.X.X|
|00002880| 2f 2a 0a 58 20 2a 20 54 | 68 65 20 6d 65 74 68 6f |/*.X * T|he metho|
|00002890| 64 20 73 65 6c 65 63 74 | 69 6f 6e 20 72 6f 75 74 |d select|ion rout|
|000028a0| 69 6e 65 20 66 6f 72 20 | 69 6e 70 75 74 20 63 6f |ine for |input co|
|000028b0| 6c 6f 72 73 70 61 63 65 | 20 63 6f 6e 76 65 72 73 |lorspace| convers|
|000028c0| 69 6f 6e 2e 0a 58 20 2a | 2f 0a 58 0a 58 47 4c 4f |ion..X *|/.X.XGLO|
|000028d0| 42 41 4c 20 76 6f 69 64 | 0a 58 6a 73 65 6c 63 63 |BAL void|.Xjselcc|
|000028e0| 6f 6c 6f 72 20 28 63 6f | 6d 70 72 65 73 73 5f 69 |olor (co|mpress_i|
|000028f0| 6e 66 6f 5f 70 74 72 20 | 63 69 6e 66 6f 29 0a 58 |nfo_ptr |cinfo).X|
|00002900| 7b 0a 58 20 20 2f 2a 20 | 4d 61 6b 65 20 73 75 72 |{.X /* |Make sur|
|00002910| 65 20 69 6e 70 75 74 5f | 63 6f 6d 70 6f 6e 65 6e |e input_|componen|
|00002920| 74 73 20 61 67 72 65 65 | 73 20 77 69 74 68 20 69 |ts agree|s with i|
|00002930| 6e 5f 63 6f 6c 6f 72 5f | 73 70 61 63 65 20 2a 2f |n_color_|space */|
|00002940| 0a 58 20 20 73 77 69 74 | 63 68 20 28 63 69 6e 66 |.X swit|ch (cinf|
|00002950| 6f 2d 3e 69 6e 5f 63 6f | 6c 6f 72 5f 73 70 61 63 |o->in_co|lor_spac|
|00002960| 65 29 20 7b 0a 58 20 20 | 63 61 73 65 20 43 53 5f |e) {.X |case CS_|
|00002970| 47 52 41 59 53 43 41 4c | 45 3a 0a 58 20 20 20 20 |GRAYSCAL|E:.X |
|00002980| 69 66 20 28 63 69 6e 66 | 6f 2d 3e 69 6e 70 75 74 |if (cinf|o->input|
|00002990| 5f 63 6f 6d 70 6f 6e 65 | 6e 74 73 20 21 3d 20 31 |_compone|nts != 1|
|000029a0| 29 0a 58 20 20 20 20 20 | 20 45 52 52 45 58 49 54 |).X | ERREXIT|
|000029b0| 28 63 69 6e 66 6f 2d 3e | 65 6d 65 74 68 6f 64 73 |(cinfo->|emethods|
|000029c0| 2c 20 22 42 6f 67 75 73 | 20 69 6e 70 75 74 20 63 |, "Bogus| input c|
|000029d0| 6f 6c 6f 72 73 70 61 63 | 65 22 29 3b 0a 58 20 20 |olorspac|e");.X |
|000029e0| 20 20 62 72 65 61 6b 3b | 0a 58 0a 58 20 20 63 61 | break;|.X.X ca|
|000029f0| 73 65 20 43 53 5f 52 47 | 42 3a 0a 58 20 20 63 61 |se CS_RG|B:.X ca|
|00002a00| 73 65 20 43 53 5f 59 43 | 62 43 72 3a 0a 58 20 20 |se CS_YC|bCr:.X |
|00002a10| 63 61 73 65 20 43 53 5f | 59 49 51 3a 0a 58 20 20 |case CS_|YIQ:.X |
|00002a20| 20 20 69 66 20 28 63 69 | 6e 66 6f 2d 3e 69 6e 70 | if (ci|nfo->inp|
|00002a30| 75 74 5f 63 6f 6d 70 6f | 6e 65 6e 74 73 20 21 3d |ut_compo|nents !=|
|00002a40| 20 33 29 0a 58 20 20 20 | 20 20 20 45 52 52 45 58 | 3).X | ERREX|
|00002a50| 49 54 28 63 69 6e 66 6f | 2d 3e 65 6d 65 74 68 6f |IT(cinfo|->emetho|
|00002a60| 64 73 2c 20 22 42 6f 67 | 75 73 20 69 6e 70 75 74 |ds, "Bog|us input|
|00002a70| 20 63 6f 6c 6f 72 73 70 | 61 63 65 22 29 3b 0a 58 | colorsp|ace");.X|
|00002a80| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 0a 58 20 20 | brea|k;.X.X |
|00002a90| 63 61 73 65 20 43 53 5f | 43 4d 59 4b 3a 0a 58 20 |case CS_|CMYK:.X |
|00002aa0| 20 20 20 69 66 20 28 63 | 69 6e 66 6f 2d 3e 69 6e | if (c|info->in|
|00002ab0| 70 75 74 5f 63 6f 6d 70 | 6f 6e 65 6e 74 73 20 21 |put_comp|onents !|
|00002ac0| 3d 20 34 29 0a 58 20 20 | 20 20 20 20 45 52 52 45 |= 4).X | ERRE|
|00002ad0| 58 49 54 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |XIT(cinf|o->emeth|
|00002ae0| 6f 64 73 2c 20 22 42 6f | 67 75 73 20 69 6e 70 75 |ods, "Bo|gus inpu|
|00002af0| 74 20 63 6f 6c 6f 72 73 | 70 61 63 65 22 29 3b 0a |t colors|pace");.|
|00002b00| 58 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 0a 58 20 |X bre|ak;.X.X |
|00002b10| 20 64 65 66 61 75 6c 74 | 3a 0a 58 20 20 20 20 45 | default|:.X E|
|00002b20| 52 52 45 58 49 54 28 63 | 69 6e 66 6f 2d 3e 65 6d |RREXIT(c|info->em|
|00002b30| 65 74 68 6f 64 73 2c 20 | 22 55 6e 73 75 70 70 6f |ethods, |"Unsuppo|
|00002b40| 72 74 65 64 20 69 6e 70 | 75 74 20 63 6f 6c 6f 72 |rted inp|ut color|
|00002b50| 73 70 61 63 65 22 29 3b | 0a 58 20 20 20 20 62 72 |space");|.X br|
|00002b60| 65 61 6b 3b 0a 58 20 20 | 7d 0a 58 0a 58 20 20 2f |eak;.X |}.X.X /|
|00002b70| 2a 20 53 74 61 6e 64 61 | 72 64 20 69 6e 69 74 2f |* Standa|rd init/|
|00002b80| 74 65 72 6d 20 6d 65 74 | 68 6f 64 73 20 28 6d 61 |term met|hods (ma|
|00002b90| 79 20 6f 76 65 72 72 69 | 64 65 20 62 65 6c 6f 77 |y overri|de below|
|00002ba0| 29 20 2a 2f 0a 58 20 20 | 63 69 6e 66 6f 2d 3e 6d |) */.X |cinfo->m|
|00002bb0| 65 74 68 6f 64 73 2d 3e | 63 6f 6c 6f 72 69 6e 5f |ethods->|colorin_|
|00002bc0| 69 6e 69 74 20 3d 20 63 | 6f 6c 6f 72 69 6e 5f 69 |init = c|olorin_i|
|00002bd0| 6e 69 74 3b 0a 58 20 20 | 63 69 6e 66 6f 2d 3e 6d |nit;.X |cinfo->m|
|00002be0| 65 74 68 6f 64 73 2d 3e | 63 6f 6c 6f 72 69 6e 5f |ethods->|colorin_|
|00002bf0| 74 65 72 6d 20 3d 20 63 | 6f 6c 6f 72 69 6e 5f 74 |term = c|olorin_t|
|00002c00| 65 72 6d 3b 0a 58 0a 58 | 20 20 2f 2a 20 43 68 65 |erm;.X.X| /* Che|
|00002c10| 63 6b 20 6e 75 6d 5f 63 | 6f 6d 70 6f 6e 65 6e 74 |ck num_c|omponent|
|00002c20| 73 2c 20 73 65 74 20 63 | 6f 6e 76 65 72 73 69 6f |s, set c|onversio|
|00002c30| 6e 20 6d 65 74 68 6f 64 | 20 62 61 73 65 64 20 6f |n method| based o|
|00002c40| 6e 20 72 65 71 75 65 73 | 74 65 64 20 73 70 61 63 |n reques|ted spac|
|00002c50| 65 20 2a 2f 0a 58 20 20 | 73 77 69 74 63 68 20 28 |e */.X |switch (|
|00002c60| 63 69 6e 66 6f 2d 3e 6a | 70 65 67 5f 63 6f 6c 6f |cinfo->j|peg_colo|
|00002c70| 72 5f 73 70 61 63 65 29 | 20 7b 0a 58 20 20 63 61 |r_space)| {.X ca|
|00002c80| 73 65 20 43 53 5f 47 52 | 41 59 53 43 41 4c 45 3a |se CS_GR|AYSCALE:|
|00002c90| 0a 58 20 20 20 20 69 66 | 20 28 63 69 6e 66 6f 2d |.X if| (cinfo-|
|00002ca0| 3e 6e 75 6d 5f 63 6f 6d | 70 6f 6e 65 6e 74 73 20 |>num_com|ponents |
|00002cb0| 21 3d 20 31 29 0a 58 20 | 20 20 20 20 20 45 52 52 |!= 1).X | ERR|
|00002cc0| 45 58 49 54 28 63 69 6e | 66 6f 2d 3e 65 6d 65 74 |EXIT(cin|fo->emet|
|00002cd0| 68 6f 64 73 2c 20 22 42 | 6f 67 75 73 20 4a 50 45 |hods, "B|ogus JPE|
|00002ce0| 47 20 63 6f 6c 6f 72 73 | 70 61 63 65 22 29 3b 0a |G colors|pace");.|
|00002cf0| 58 20 20 20 20 69 66 20 | 28 63 69 6e 66 6f 2d 3e |X if |(cinfo->|
|00002d00| 69 6e 5f 63 6f 6c 6f 72 | 5f 73 70 61 63 65 20 3d |in_color|_space =|
|00002d10| 3d 20 43 53 5f 47 52 41 | 59 53 43 41 4c 45 29 0a |= CS_GRA|YSCALE).|
|00002d20| 58 20 20 20 20 20 20 63 | 69 6e 66 6f 2d 3e 6d 65 |X c|info->me|
|00002d30| 74 68 6f 64 73 2d 3e 67 | 65 74 5f 73 61 6d 70 6c |thods->g|et_sampl|
|00002d40| 65 5f 72 6f 77 73 20 3d | 20 67 65 74 5f 67 72 61 |e_rows =| get_gra|
|00002d50| 79 73 63 61 6c 65 5f 72 | 6f 77 73 3b 0a 58 20 20 |yscale_r|ows;.X |
|00002d60| 20 20 65 6c 73 65 20 69 | 66 20 28 63 69 6e 66 6f | else i|f (cinfo|
|00002d70| 2d 3e 69 6e 5f 63 6f 6c | 6f 72 5f 73 70 61 63 65 |->in_col|or_space|
|00002d80| 20 3d 3d 20 43 53 5f 52 | 47 42 29 20 7b 0a 58 20 | == CS_R|GB) {.X |
|00002d90| 20 20 20 20 20 63 69 6e | 66 6f 2d 3e 6d 65 74 68 | cin|fo->meth|
|00002da0| 6f 64 73 2d 3e 63 6f 6c | 6f 72 69 6e 5f 69 6e 69 |ods->col|orin_ini|
|00002db0| 74 20 3d 20 72 67 62 5f | 79 63 63 5f 69 6e 69 74 |t = rgb_|ycc_init|
|00002dc0| 3b 0a 58 20 20 20 20 20 | 20 63 69 6e 66 6f 2d 3e |;.X | cinfo->|
|00002dd0| 6d 65 74 68 6f 64 73 2d | 3e 67 65 74 5f 73 61 6d |methods-|>get_sam|
|00002de0| 70 6c 65 5f 72 6f 77 73 | 20 3d 20 67 65 74 5f 72 |ple_rows| = get_r|
|00002df0| 67 62 5f 67 72 61 79 5f | 72 6f 77 73 3b 0a 58 20 |gb_gray_|rows;.X |
|00002e00| 20 20 20 7d 20 65 6c 73 | 65 20 69 66 20 28 63 69 | } els|e if (ci|
|00002e10| 6e 66 6f 2d 3e 69 6e 5f | 63 6f 6c 6f 72 5f 73 70 |nfo->in_|color_sp|
|00002e20| 61 63 65 20 3d 3d 20 43 | 53 5f 59 43 62 43 72 29 |ace == C|S_YCbCr)|
|00002e30| 0a 58 20 20 20 20 20 20 | 63 69 6e 66 6f 2d 3e 6d |.X |cinfo->m|
|00002e40| 65 74 68 6f 64 73 2d 3e | 67 65 74 5f 73 61 6d 70 |ethods->|get_samp|
|00002e50| 6c 65 5f 72 6f 77 73 20 | 3d 20 67 65 74 5f 67 72 |le_rows |= get_gr|
|00002e60| 61 79 73 63 61 6c 65 5f | 72 6f 77 73 3b 0a 58 20 |ayscale_|rows;.X |
|00002e70| 20 20 20 65 6c 73 65 0a | 58 20 20 20 20 20 20 45 | else.|X E|
|00002e80| 52 52 45 58 49 54 28 63 | 69 6e 66 6f 2d 3e 65 6d |RREXIT(c|info->em|
|00002e90| 65 74 68 6f 64 73 2c 20 | 22 55 6e 73 75 70 70 6f |ethods, |"Unsuppo|
|00002ea0| 72 74 65 64 20 63 6f 6c | 6f 72 20 63 6f 6e 76 65 |rted col|or conve|
|00002eb0| 72 73 69 6f 6e 20 72 65 | 71 75 65 73 74 22 29 3b |rsion re|quest");|
|00002ec0| 0a 58 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 0a 58 |.X br|eak;.X.X|
|00002ed0| 20 20 63 61 73 65 20 43 | 53 5f 59 43 62 43 72 3a | case C|S_YCbCr:|
|00002ee0| 0a 58 20 20 20 20 69 66 | 20 28 63 69 6e 66 6f 2d |.X if| (cinfo-|
|00002ef0| 3e 6e 75 6d 5f 63 6f 6d | 70 6f 6e 65 6e 74 73 20 |>num_com|ponents |
|00002f00| 21 3d 20 33 29 0a 58 20 | 20 20 20 20 20 45 52 52 |!= 3).X | ERR|
|00002f10| 45 58 49 54 28 63 69 6e | 66 6f 2d 3e 65 6d 65 74 |EXIT(cin|fo->emet|
|00002f20| 68 6f 64 73 2c 20 22 42 | 6f 67 75 73 20 4a 50 45 |hods, "B|ogus JPE|
|00002f30| 47 20 63 6f 6c 6f 72 73 | 70 61 63 65 22 29 3b 0a |G colors|pace");.|
|00002f40| 58 20 20 20 20 69 66 20 | 28 63 69 6e 66 6f 2d 3e |X if |(cinfo->|
|00002f50| 69 6e 5f 63 6f 6c 6f 72 | 5f 73 70 61 63 65 20 3d |in_color|_space =|
|00002f60| 3d 20 43 53 5f 52 47 42 | 29 20 7b 0a 58 20 20 20 |= CS_RGB|) {.X |
|00002f70| 20 20 20 63 69 6e 66 6f | 2d 3e 6d 65 74 68 6f 64 | cinfo|->method|
|00002f80| 73 2d 3e 63 6f 6c 6f 72 | 69 6e 5f 69 6e 69 74 20 |s->color|in_init |
|00002f90| 3d 20 72 67 62 5f 79 63 | 63 5f 69 6e 69 74 3b 0a |= rgb_yc|c_init;.|
|00002fa0| 58 20 20 20 20 20 20 63 | 69 6e 66 6f 2d 3e 6d 65 |X c|info->me|
|00002fb0| 74 68 6f 64 73 2d 3e 67 | 65 74 5f 73 61 6d 70 6c |thods->g|et_sampl|
|00002fc0| 65 5f 72 6f 77 73 20 3d | 20 67 65 74 5f 72 67 62 |e_rows =| get_rgb|
|00002fd0| 5f 79 63 63 5f 72 6f 77 | 73 3b 0a 58 20 20 20 20 |_ycc_row|s;.X |
|00002fe0| 7d 20 65 6c 73 65 20 69 | 66 20 28 63 69 6e 66 6f |} else i|f (cinfo|
|00002ff0| 2d 3e 69 6e 5f 63 6f 6c | 6f 72 5f 73 70 61 63 65 |->in_col|or_space|
|00003000| 20 3d 3d 20 43 53 5f 59 | 43 62 43 72 29 0a 58 20 | == CS_Y|CbCr).X |
|00003010| 20 20 20 20 20 63 69 6e | 66 6f 2d 3e 6d 65 74 68 | cin|fo->meth|
|00003020| 6f 64 73 2d 3e 67 65 74 | 5f 73 61 6d 70 6c 65 5f |ods->get|_sample_|
|00003030| 72 6f 77 73 20 3d 20 67 | 65 74 5f 6e 6f 63 6f 6e |rows = g|et_nocon|
|00003040| 76 65 72 74 5f 72 6f 77 | 73 3b 0a 58 20 20 20 20 |vert_row|s;.X |
|00003050| 65 6c 73 65 0a 58 20 20 | 20 20 20 20 45 52 52 45 |else.X | ERRE|
|00003060| 58 49 54 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |XIT(cinf|o->emeth|
|00003070| 6f 64 73 2c 20 22 55 6e | 73 75 70 70 6f 72 74 65 |ods, "Un|supporte|
|00003080| 64 20 63 6f 6c 6f 72 20 | 63 6f 6e 76 65 72 73 69 |d color |conversi|
|00003090| 6f 6e 20 72 65 71 75 65 | 73 74 22 29 3b 0a 58 20 |on reque|st");.X |
|000030a0| 20 20 20 62 72 65 61 6b | 3b 0a 58 0a 58 20 20 63 | break|;.X.X c|
|000030b0| 61 73 65 20 43 53 5f 43 | 4d 59 4b 3a 0a 58 20 20 |ase CS_C|MYK:.X |
|000030c0| 20 20 69 66 20 28 63 69 | 6e 66 6f 2d 3e 6e 75 6d | if (ci|nfo->num|
|000030d0| 5f 63 6f 6d 70 6f 6e 65 | 6e 74 73 20 21 3d 20 34 |_compone|nts != 4|
|000030e0| 29 0a 58 20 20 20 20 20 | 20 45 52 52 45 58 49 54 |).X | ERREXIT|
|000030f0| 28 63 69 6e 66 6f 2d 3e | 65 6d 65 74 68 6f 64 73 |(cinfo->|emethods|
|00003100| 2c 20 22 42 6f 67 75 73 | 20 4a 50 45 47 20 63 6f |, "Bogus| JPEG co|
|00003110| 6c 6f 72 73 70 61 63 65 | 22 29 3b 0a 58 20 20 20 |lorspace|");.X |
|00003120| 20 69 66 20 28 63 69 6e | 66 6f 2d 3e 69 6e 5f 63 | if (cin|fo->in_c|
|00003130| 6f 6c 6f 72 5f 73 70 61 | 63 65 20 3d 3d 20 43 53 |olor_spa|ce == CS|
|00003140| 5f 43 4d 59 4b 29 0a 58 | 20 20 20 20 20 20 63 69 |_CMYK).X| ci|
|00003150| 6e 66 6f 2d 3e 6d 65 74 | 68 6f 64 73 2d 3e 67 65 |nfo->met|hods->ge|
|00003160| 74 5f 73 61 6d 70 6c 65 | 5f 72 6f 77 73 20 3d 20 |t_sample|_rows = |
|00003170| 67 65 74 5f 6e 6f 63 6f | 6e 76 65 72 74 5f 72 6f |get_noco|nvert_ro|
|00003180| 77 73 3b 0a 58 20 20 20 | 20 65 6c 73 65 0a 58 20 |ws;.X | else.X |
|00003190| 20 20 20 20 20 45 52 52 | 45 58 49 54 28 63 69 6e | ERR|EXIT(cin|
|000031a0| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2c 20 22 55 |fo->emet|hods, "U|
|000031b0| 6e 73 75 70 70 6f 72 74 | 65 64 20 63 6f 6c 6f 72 |nsupport|ed color|
|000031c0| 20 63 6f 6e 76 65 72 73 | 69 6f 6e 20 72 65 71 75 | convers|ion requ|
|000031d0| 65 73 74 22 29 3b 0a 58 | 20 20 20 20 62 72 65 61 |est");.X| brea|
|000031e0| 6b 3b 0a 58 0a 58 20 20 | 64 65 66 61 75 6c 74 3a |k;.X.X |default:|
|000031f0| 0a 58 20 20 20 20 45 52 | 52 45 58 49 54 28 63 69 |.X ER|REXIT(ci|
|00003200| 6e 66 6f 2d 3e 65 6d 65 | 74 68 6f 64 73 2c 20 22 |nfo->eme|thods, "|
|00003210| 55 6e 73 75 70 70 6f 72 | 74 65 64 20 4a 50 45 47 |Unsuppor|ted JPEG|
|00003220| 20 63 6f 6c 6f 72 73 70 | 61 63 65 22 29 3b 0a 58 | colorsp|ace");.X|
|00003230| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 20 20 7d 0a | brea|k;.X }.|
|00003240| 58 7d 0a 45 4e 44 5f 4f | 46 5f 46 49 4c 45 0a 20 |X}.END_O|F_FILE. |
|00003250| 20 69 66 20 74 65 73 74 | 20 31 31 32 33 36 20 2d | if test| 11236 -|
|00003260| 6e 65 20 60 77 63 20 2d | 63 20 3c 27 6a 63 63 6f |ne `wc -|c <'jcco|
|00003270| 6c 6f 72 2e 63 27 60 3b | 20 74 68 65 6e 0a 20 20 |lor.c'`;| then. |
|00003280| 20 20 65 63 68 6f 20 73 | 68 61 72 3a 20 5c 22 27 | echo s|har: \"'|
|00003290| 6a 63 63 6f 6c 6f 72 2e | 63 27 5c 22 20 75 6e 70 |jccolor.|c'\" unp|
|000032a0| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|000032b0| 20 73 69 7a 65 21 0a 20 | 20 66 69 0a 20 20 23 20 | size!. | fi. # |
|000032c0| 65 6e 64 20 6f 66 20 27 | 6a 63 63 6f 6c 6f 72 2e |end of '|jccolor.|
|000032d0| 63 27 0a 66 69 0a 69 66 | 20 74 65 73 74 20 2d 66 |c'.fi.if| test -f|
|000032e0| 20 27 6a 64 63 6f 6c 6f | 72 2e 63 27 20 2d 61 20 | 'jdcolo|r.c' -a |
|000032f0| 22 24 7b 31 7d 22 20 21 | 3d 20 22 2d 63 22 20 3b |"${1}" !|= "-c" ;|
|00003300| 20 74 68 65 6e 20 0a 20 | 20 65 63 68 6f 20 73 68 | then . | echo sh|
|00003310| 61 72 3a 20 57 69 6c 6c | 20 6e 6f 74 20 63 6c 6f |ar: Will| not clo|
|00003320| 62 62 65 72 20 65 78 69 | 73 74 69 6e 67 20 66 69 |bber exi|sting fi|
|00003330| 6c 65 20 5c 22 27 6a 64 | 63 6f 6c 6f 72 2e 63 27 |le \"'jd|color.c'|
|00003340| 5c 22 0a 65 6c 73 65 0a | 20 20 65 63 68 6f 20 73 |\".else.| echo s|
|00003350| 68 61 72 3a 20 45 78 74 | 72 61 63 74 69 6e 67 20 |har: Ext|racting |
|00003360| 5c 22 27 6a 64 63 6f 6c | 6f 72 2e 63 27 5c 22 20 |\"'jdcol|or.c'\" |
|00003370| 5c 28 39 30 39 30 20 63 | 68 61 72 61 63 74 65 72 |\(9090 c|haracter|
|00003380| 73 5c 29 0a 20 20 73 65 | 64 20 22 73 2f 5e 58 2f |s\). se|d "s/^X/|
|00003390| 2f 22 20 3e 27 6a 64 63 | 6f 6c 6f 72 2e 63 27 20 |/" >'jdc|olor.c' |
|000033a0| 3c 3c 27 45 4e 44 5f 4f | 46 5f 46 49 4c 45 27 0a |<<'END_O|F_FILE'.|
|000033b0| 58 2f 2a 0a 58 20 2a 20 | 6a 64 63 6f 6c 6f 72 2e |X/*.X * |jdcolor.|
|000033c0| 63 0a 58 20 2a 0a 58 20 | 2a 20 43 6f 70 79 72 69 |c.X *.X |* Copyri|
|000033d0| 67 68 74 20 28 43 29 20 | 31 39 39 31 2c 20 31 39 |ght (C) |1991, 19|
|000033e0| 39 32 2c 20 54 68 6f 6d | 61 73 20 47 2e 20 4c 61 |92, Thom|as G. La|
|000033f0| 6e 65 2e 0a 58 20 2a 20 | 54 68 69 73 20 66 69 6c |ne..X * |This fil|
|00003400| 65 20 69 73 20 70 61 72 | 74 20 6f 66 20 74 68 65 |e is par|t of the|
|00003410| 20 49 6e 64 65 70 65 6e | 64 65 6e 74 20 4a 50 45 | Indepen|dent JPE|
|00003420| 47 20 47 72 6f 75 70 27 | 73 20 73 6f 66 74 77 61 |G Group'|s softwa|
|00003430| 72 65 2e 0a 58 20 2a 20 | 46 6f 72 20 63 6f 6e 64 |re..X * |For cond|
|00003440| 69 74 69 6f 6e 73 20 6f | 66 20 64 69 73 74 72 69 |itions o|f distri|
|00003450| 62 75 74 69 6f 6e 20 61 | 6e 64 20 75 73 65 2c 20 |bution a|nd use, |
|00003460| 73 65 65 20 74 68 65 20 | 61 63 63 6f 6d 70 61 6e |see the |accompan|
|00003470| 79 69 6e 67 20 52 45 41 | 44 4d 45 20 66 69 6c 65 |ying REA|DME file|
|00003480| 2e 0a 58 20 2a 0a 58 20 | 2a 20 54 68 69 73 20 66 |..X *.X |* This f|
|00003490| 69 6c 65 20 63 6f 6e 74 | 61 69 6e 73 20 6f 75 74 |ile cont|ains out|
|000034a0| 70 75 74 20 63 6f 6c 6f | 72 73 70 61 63 65 20 63 |put colo|rspace c|
|000034b0| 6f 6e 76 65 72 73 69 6f | 6e 20 72 6f 75 74 69 6e |onversio|n routin|
|000034c0| 65 73 2e 0a 58 20 2a 20 | 54 68 65 73 65 20 72 6f |es..X * |These ro|
|000034d0| 75 74 69 6e 65 73 20 61 | 72 65 20 69 6e 76 6f 6b |utines a|re invok|
|000034e0| 65 64 20 76 69 61 20 74 | 68 65 20 6d 65 74 68 6f |ed via t|he metho|
|000034f0| 64 73 20 63 6f 6c 6f 72 | 5f 63 6f 6e 76 65 72 74 |ds color|_convert|
|00003500| 0a 58 20 2a 20 61 6e 64 | 20 63 6f 6c 6f 72 6f 75 |.X * and| colorou|
|00003510| 74 5f 69 6e 69 74 2f 74 | 65 72 6d 2e 0a 58 20 2a |t_init/t|erm..X *|
|00003520| 2f 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 22 6a |/.X.X#in|clude "j|
|00003530| 69 6e 63 6c 75 64 65 2e | 68 22 0a 58 0a 58 0a 58 |include.|h".X.X.X|
|00003540| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00003550| 2a 20 59 43 62 43 72 20 | 2d 3e 20 52 47 42 20 63 |* YCbCr |-> RGB c|
|00003560| 6f 6e 76 65 72 73 69 6f | 6e 3a 20 6d 6f 73 74 20 |onversio|n: most |
|00003570| 63 6f 6d 6d 6f 6e 20 63 | 61 73 65 20 2a 2a 2a 2a |common c|ase ****|
|00003580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 0a 58 2f |********|**/.X.X/|
|00003590| 2a 0a 58 20 2a 20 59 43 | 62 43 72 20 69 73 20 64 |*.X * YC|bCr is d|
|000035a0| 65 66 69 6e 65 64 20 70 | 65 72 20 43 43 49 52 20 |efined p|er CCIR |
|000035b0| 36 30 31 2d 31 2c 20 65 | 78 63 65 70 74 20 74 68 |601-1, e|xcept th|
|000035c0| 61 74 20 43 62 20 61 6e | 64 20 43 72 20 61 72 65 |at Cb an|d Cr are|
|000035d0| 0a 58 20 2a 20 6e 6f 72 | 6d 61 6c 69 7a 65 64 20 |.X * nor|malized |
|000035e0| 74 6f 20 74 68 65 20 72 | 61 6e 67 65 20 30 2e 2e |to the r|ange 0..|
|000035f0| 4d 41 58 4a 53 41 4d 50 | 4c 45 20 72 61 74 68 65 |MAXJSAMP|LE rathe|
|00003600| 72 20 74 68 61 6e 20 2d | 30 2e 35 20 2e 2e 20 30 |r than -|0.5 .. 0|
|00003610| 2e 35 2e 0a 58 20 2a 20 | 54 68 65 20 63 6f 6e 76 |.5..X * |The conv|
|00003620| 65 72 73 69 6f 6e 20 65 | 71 75 61 74 69 6f 6e 73 |ersion e|quations|
|00003630| 20 74 6f 20 62 65 20 69 | 6d 70 6c 65 6d 65 6e 74 | to be i|mplement|
|00003640| 65 64 20 61 72 65 20 74 | 68 65 72 65 66 6f 72 65 |ed are t|herefore|
|00003650| 0a 58 20 2a 09 52 20 3d | 20 59 20 20 20 20 20 20 |.X *.R =| Y |
|00003660| 20 20 20 20 20 20 20 20 | 20 20 2b 20 31 2e 34 30 | | + 1.40|
|00003670| 32 30 30 20 2a 20 43 72 | 0a 58 20 2a 09 47 20 3d |200 * Cr|.X *.G =|
|00003680| 20 59 20 2d 20 30 2e 33 | 34 34 31 34 20 2a 20 43 | Y - 0.3|4414 * C|
|00003690| 62 20 2d 20 30 2e 37 31 | 34 31 34 20 2a 20 43 72 |b - 0.71|414 * Cr|
|000036a0| 0a 58 20 2a 09 42 20 3d | 20 59 20 2b 20 31 2e 37 |.X *.B =| Y + 1.7|
|000036b0| 37 32 30 30 20 2a 20 43 | 62 0a 58 20 2a 20 77 68 |7200 * C|b.X * wh|
|000036c0| 65 72 65 20 43 62 20 61 | 6e 64 20 43 72 20 72 65 |ere Cb a|nd Cr re|
|000036d0| 70 72 65 73 65 6e 74 20 | 74 68 65 20 69 6e 63 6f |present |the inco|
|000036e0| 6d 69 6e 67 20 76 61 6c | 75 65 73 20 6c 65 73 73 |ming val|ues less|
|000036f0| 20 4d 41 58 4a 53 41 4d | 50 4c 45 2f 32 2e 0a 58 | MAXJSAM|PLE/2..X|
|00003700| 20 2a 20 28 54 68 65 73 | 65 20 6e 75 6d 62 65 72 | * (Thes|e number|
|00003710| 73 20 61 72 65 20 64 65 | 72 69 76 65 64 20 66 72 |s are de|rived fr|
|00003720| 6f 6d 20 54 49 46 46 20 | 36 2e 30 20 73 65 63 74 |om TIFF |6.0 sect|
|00003730| 69 6f 6e 20 32 31 2c 20 | 64 61 74 65 64 20 33 2d |ion 21, |dated 3-|
|00003740| 4a 75 6e 65 2d 39 32 2e | 29 0a 58 20 2a 0a 58 20 |June-92.|).X *.X |
|00003750| 2a 20 54 6f 20 61 76 6f | 69 64 20 66 6c 6f 61 74 |* To avo|id float|
|00003760| 69 6e 67 2d 70 6f 69 6e | 74 20 61 72 69 74 68 6d |ing-poin|t arithm|
|00003770| 65 74 69 63 2c 20 77 65 | 20 72 65 70 72 65 73 65 |etic, we| represe|
|00003780| 6e 74 20 74 68 65 20 66 | 72 61 63 74 69 6f 6e 61 |nt the f|ractiona|
|00003790| 6c 20 63 6f 6e 73 74 61 | 6e 74 73 0a 58 20 2a 20 |l consta|nts.X * |
|000037a0| 61 73 20 69 6e 74 65 67 | 65 72 73 20 73 63 61 6c |as integ|ers scal|
|000037b0| 65 64 20 75 70 20 62 79 | 20 32 5e 31 36 20 28 61 |ed up by| 2^16 (a|
|000037c0| 62 6f 75 74 20 34 20 64 | 69 67 69 74 73 20 70 72 |bout 4 d|igits pr|
|000037d0| 65 63 69 73 69 6f 6e 29 | 3b 20 77 65 20 68 61 76 |ecision)|; we hav|
|000037e0| 65 20 74 6f 20 64 69 76 | 69 64 65 0a 58 20 2a 20 |e to div|ide.X * |
|000037f0| 74 68 65 20 70 72 6f 64 | 75 63 74 73 20 62 79 20 |the prod|ucts by |
|00003800| 32 5e 31 36 2c 20 77 69 | 74 68 20 61 70 70 72 6f |2^16, wi|th appro|
|00003810| 70 72 69 61 74 65 20 72 | 6f 75 6e 64 69 6e 67 2c |priate r|ounding,|
|00003820| 20 74 6f 20 67 65 74 20 | 74 68 65 20 63 6f 72 72 | to get |the corr|
|00003830| 65 63 74 20 61 6e 73 77 | 65 72 2e 0a 58 20 2a 20 |ect answ|er..X * |
|00003840| 4e 6f 74 69 63 65 20 74 | 68 61 74 20 59 2c 20 62 |Notice t|hat Y, b|
|00003850| 65 69 6e 67 20 61 6e 20 | 69 6e 74 65 67 72 61 6c |eing an |integral|
|00003860| 20 69 6e 70 75 74 2c 20 | 64 6f 65 73 20 6e 6f 74 | input, |does not|
|00003870| 20 63 6f 6e 74 72 69 62 | 75 74 65 20 61 6e 79 20 | contrib|ute any |
|00003880| 66 72 61 63 74 69 6f 6e | 0a 58 20 2a 20 73 6f 20 |fraction|.X * so |
|00003890| 69 74 20 6e 65 65 64 20 | 6e 6f 74 20 70 61 72 74 |it need |not part|
|000038a0| 69 63 69 70 61 74 65 20 | 69 6e 20 74 68 65 20 72 |icipate |in the r|
|000038b0| 6f 75 6e 64 69 6e 67 2e | 0a 58 20 2a 0a 58 20 2a |ounding.|.X *.X *|
|000038c0| 20 46 6f 72 20 65 76 65 | 6e 20 6d 6f 72 65 20 73 | For eve|n more s|
|000038d0| 70 65 65 64 2c 20 77 65 | 20 61 76 6f 69 64 20 64 |peed, we| avoid d|
|000038e0| 6f 69 6e 67 20 61 6e 79 | 20 6d 75 6c 74 69 70 6c |oing any| multipl|
|000038f0| 69 63 61 74 69 6f 6e 73 | 20 69 6e 20 74 68 65 20 |ications| in the |
|00003900| 69 6e 6e 65 72 20 6c 6f | 6f 70 0a 58 20 2a 20 62 |inner lo|op.X * b|
|00003910| 79 20 70 72 65 63 61 6c | 63 75 6c 61 74 69 6e 67 |y precal|culating|
|00003920| 20 74 68 65 20 63 6f 6e | 73 74 61 6e 74 73 20 74 | the con|stants t|
|00003930| 69 6d 65 73 20 43 62 20 | 61 6e 64 20 43 72 20 66 |imes Cb |and Cr f|
|00003940| 6f 72 20 61 6c 6c 20 70 | 6f 73 73 69 62 6c 65 20 |or all p|ossible |
|00003950| 76 61 6c 75 65 73 2e 0a | 58 20 2a 20 46 6f 72 20 |values..|X * For |
|00003960| 38 2d 62 69 74 20 4a 53 | 41 4d 50 4c 45 73 20 74 |8-bit JS|AMPLEs t|
|00003970| 68 69 73 20 69 73 20 76 | 65 72 79 20 72 65 61 73 |his is v|ery reas|
|00003980| 6f 6e 61 62 6c 65 20 28 | 6f 6e 6c 79 20 32 35 36 |onable (|only 256|
|00003990| 20 65 6e 74 72 69 65 73 | 20 70 65 72 20 74 61 62 | entries| per tab|
|000039a0| 6c 65 29 3b 0a 58 20 2a | 20 66 6f 72 20 31 32 2d |le);.X *| for 12-|
|000039b0| 62 69 74 20 73 61 6d 70 | 6c 65 73 20 69 74 20 69 |bit samp|les it i|
|000039c0| 73 20 73 74 69 6c 6c 20 | 61 63 63 65 70 74 61 62 |s still |acceptab|
|000039d0| 6c 65 2e 20 20 49 74 27 | 73 20 6e 6f 74 20 76 65 |le. It'|s not ve|
|000039e0| 72 79 20 72 65 61 73 6f | 6e 61 62 6c 65 20 66 6f |ry reaso|nable fo|
|000039f0| 72 0a 58 20 2a 20 31 36 | 2d 62 69 74 20 73 61 6d |r.X * 16|-bit sam|
|00003a00| 70 6c 65 73 2c 20 62 75 | 74 20 69 66 20 79 6f 75 |ples, bu|t if you|
|00003a10| 20 77 61 6e 74 20 6c 6f | 73 73 6c 65 73 73 20 73 | want lo|ssless s|
|00003a20| 74 6f 72 61 67 65 20 79 | 6f 75 20 73 68 6f 75 6c |torage y|ou shoul|
|00003a30| 64 6e 27 74 20 62 65 20 | 63 68 61 6e 67 69 6e 67 |dn't be |changing|
|00003a40| 0a 58 20 2a 20 63 6f 6c | 6f 72 73 70 61 63 65 20 |.X * col|orspace |
|00003a50| 61 6e 79 77 61 79 2e 0a | 58 20 2a 20 54 68 65 20 |anyway..|X * The |
|00003a60| 43 72 3d 3e 52 20 61 6e | 64 20 43 62 3d 3e 42 20 |Cr=>R an|d Cb=>B |
|00003a70| 76 61 6c 75 65 73 20 63 | 61 6e 20 62 65 20 72 6f |values c|an be ro|
|00003a80| 75 6e 64 65 64 20 74 6f | 20 69 6e 74 65 67 65 72 |unded to| integer|
|00003a90| 73 20 69 6e 20 61 64 76 | 61 6e 63 65 3b 20 74 68 |s in adv|ance; th|
|00003aa0| 65 0a 58 20 2a 20 76 61 | 6c 75 65 73 20 66 6f 72 |e.X * va|lues for|
|00003ab0| 20 74 68 65 20 47 20 63 | 61 6c 63 75 6c 61 74 69 | the G c|alculati|
|00003ac0| 6f 6e 20 61 72 65 20 6c | 65 66 74 20 73 63 61 6c |on are l|eft scal|
|00003ad0| 65 64 20 75 70 2c 20 73 | 69 6e 63 65 20 77 65 20 |ed up, s|ince we |
|00003ae0| 6d 75 73 74 20 61 64 64 | 20 74 68 65 6d 0a 58 20 |must add| them.X |
|00003af0| 2a 20 74 6f 67 65 74 68 | 65 72 20 62 65 66 6f 72 |* togeth|er befor|
|00003b00| 65 20 72 6f 75 6e 64 69 | 6e 67 2e 0a 58 20 2a 2f |e roundi|ng..X */|
|00003b10| 0a 58 0a 58 23 69 66 64 | 65 66 20 53 49 58 54 45 |.X.X#ifd|ef SIXTE|
|00003b20| 45 4e 5f 42 49 54 5f 53 | 41 4d 50 4c 45 53 0a 58 |EN_BIT_S|AMPLES.X|
|00003b30| 23 64 65 66 69 6e 65 20 | 53 43 41 4c 45 42 49 54 |#define |SCALEBIT|
|00003b40| 53 09 31 34 09 2f 2a 20 | 61 76 6f 69 64 20 6f 76 |S.14./* |avoid ov|
|00003b50| 65 72 66 6c 6f 77 20 2a | 2f 0a 58 23 65 6c 73 65 |erflow *|/.X#else|
|00003b60| 0a 58 23 64 65 66 69 6e | 65 20 53 43 41 4c 45 42 |.X#defin|e SCALEB|
|00003b70| 49 54 53 09 31 36 09 2f | 2a 20 73 70 65 65 64 69 |ITS.16./|* speedi|
|00003b80| 65 72 20 72 69 67 68 74 | 2d 73 68 69 66 74 20 6f |er right|-shift o|
|00003b90| 6e 20 73 6f 6d 65 20 6d | 61 63 68 69 6e 65 73 20 |n some m|achines |
|00003ba0| 2a 2f 0a 58 23 65 6e 64 | 69 66 0a 58 23 64 65 66 |*/.X#end|if.X#def|
|00003bb0| 69 6e 65 20 4f 4e 45 5f | 48 41 4c 46 09 28 28 49 |ine ONE_|HALF.((I|
|00003bc0| 4e 54 33 32 29 20 31 20 | 3c 3c 20 28 53 43 41 4c |NT32) 1 |<< (SCAL|
|00003bd0| 45 42 49 54 53 2d 31 29 | 29 0a 58 23 64 65 66 69 |EBITS-1)|).X#defi|
|00003be0| 6e 65 20 46 49 58 28 78 | 29 09 09 28 28 49 4e 54 |ne FIX(x|)..((INT|
|00003bf0| 33 32 29 20 28 28 78 29 | 20 2a 20 28 31 4c 3c 3c |32) ((x)| * (1L<<|
|00003c00| 53 43 41 4c 45 42 49 54 | 53 29 20 2b 20 30 2e 35 |SCALEBIT|S) + 0.5|
|00003c10| 29 29 0a 58 0a 58 73 74 | 61 74 69 63 20 69 6e 74 |)).X.Xst|atic int|
|00003c20| 20 2a 20 43 72 5f 72 5f | 74 61 62 3b 09 09 2f 2a | * Cr_r_|tab;../*|
|00003c30| 20 3d 3e 20 74 61 62 6c | 65 20 66 6f 72 20 43 72 | => tabl|e for Cr|
|00003c40| 20 74 6f 20 52 20 63 6f | 6e 76 65 72 73 69 6f 6e | to R co|nversion|
|00003c50| 20 2a 2f 0a 58 73 74 61 | 74 69 63 20 69 6e 74 20 | */.Xsta|tic int |
|00003c60| 2a 20 43 62 5f 62 5f 74 | 61 62 3b 09 09 2f 2a 20 |* Cb_b_t|ab;../* |
|00003c70| 3d 3e 20 74 61 62 6c 65 | 20 66 6f 72 20 43 62 20 |=> table| for Cb |
|00003c80| 74 6f 20 42 20 63 6f 6e | 76 65 72 73 69 6f 6e 20 |to B con|version |
|00003c90| 2a 2f 0a 58 73 74 61 74 | 69 63 20 49 4e 54 33 32 |*/.Xstat|ic INT32|
|00003ca0| 20 2a 20 43 72 5f 67 5f | 74 61 62 3b 09 2f 2a 20 | * Cr_g_|tab;./* |
|00003cb0| 3d 3e 20 74 61 62 6c 65 | 20 66 6f 72 20 43 72 20 |=> table| for Cr |
|00003cc0| 74 6f 20 47 20 63 6f 6e | 76 65 72 73 69 6f 6e 20 |to G con|version |
|00003cd0| 2a 2f 0a 58 73 74 61 74 | 69 63 20 49 4e 54 33 32 |*/.Xstat|ic INT32|
|00003ce0| 20 2a 20 43 62 5f 67 5f | 74 61 62 3b 09 2f 2a 20 | * Cb_g_|tab;./* |
|00003cf0| 3d 3e 20 74 61 62 6c 65 | 20 66 6f 72 20 43 62 20 |=> table| for Cb |
|00003d00| 74 6f 20 47 20 63 6f 6e | 76 65 72 73 69 6f 6e 20 |to G con|version |
|00003d10| 2a 2f 0a 58 0a 58 0a 58 | 2f 2a 0a 58 20 2a 20 49 |*/.X.X.X|/*.X * I|
|00003d20| 6e 69 74 69 61 6c 69 7a | 65 20 66 6f 72 20 63 6f |nitializ|e for co|
|00003d30| 6c 6f 72 73 70 61 63 65 | 20 63 6f 6e 76 65 72 73 |lorspace| convers|
|00003d40| 69 6f 6e 2e 0a 58 20 2a | 2f 0a 58 0a 58 4d 45 54 |ion..X *|/.X.XMET|
|00003d50| 48 4f 44 44 45 46 20 76 | 6f 69 64 0a 58 79 63 63 |HODDEF v|oid.Xycc|
|00003d60| 5f 72 67 62 5f 69 6e 69 | 74 20 28 64 65 63 6f 6d |_rgb_ini|t (decom|
|00003d70| 70 72 65 73 73 5f 69 6e | 66 6f 5f 70 74 72 20 63 |press_in|fo_ptr c|
|00003d80| 69 6e 66 6f 29 0a 58 7b | 0a 58 20 20 49 4e 54 33 |info).X{|.X INT3|
|00003d90| 32 20 69 2c 20 78 32 3b | 0a 58 20 20 53 48 49 46 |2 i, x2;|.X SHIF|
|00003da0| 54 5f 54 45 4d 50 53 0a | 58 0a 58 20 20 43 72 5f |T_TEMPS.|X.X Cr_|
|00003db0| 72 5f 74 61 62 20 3d 20 | 28 69 6e 74 20 2a 29 20 |r_tab = |(int *) |
|00003dc0| 28 2a 63 69 6e 66 6f 2d | 3e 65 6d 65 74 68 6f 64 |(*cinfo-|>emethod|
|00003dd0| 73 2d 3e 61 6c 6c 6f 63 | 5f 73 6d 61 6c 6c 29 0a |s->alloc|_small).|
|00003de0| 58 09 09 09 09 28 28 4d | 41 58 4a 53 41 4d 50 4c |X....((M|AXJSAMPL|
|00003df0| 45 2b 31 29 20 2a 20 53 | 49 5a 45 4f 46 28 69 6e |E+1) * S|IZEOF(in|
|00003e00| 74 29 29 3b 0a 58 20 20 | 43 62 5f 62 5f 74 61 62 |t));.X |Cb_b_tab|
|00003e10| 20 3d 20 28 69 6e 74 20 | 2a 29 20 28 2a 63 69 6e | = (int |*) (*cin|
|00003e20| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2d 3e 61 6c |fo->emet|hods->al|
|00003e30| 6c 6f 63 5f 73 6d 61 6c | 6c 29 0a 58 09 09 09 09 |loc_smal|l).X....|
|00003e40| 28 28 4d 41 58 4a 53 41 | 4d 50 4c 45 2b 31 29 20 |((MAXJSA|MPLE+1) |
|00003e50| 2a 20 53 49 5a 45 4f 46 | 28 69 6e 74 29 29 3b 0a |* SIZEOF|(int));.|
|00003e60| 58 20 20 43 72 5f 67 5f | 74 61 62 20 3d 20 28 49 |X Cr_g_|tab = (I|
|00003e70| 4e 54 33 32 20 2a 29 20 | 28 2a 63 69 6e 66 6f 2d |NT32 *) |(*cinfo-|
|00003e80| 3e 65 6d 65 74 68 6f 64 | 73 2d 3e 61 6c 6c 6f 63 |>emethod|s->alloc|
|00003e90| 5f 73 6d 61 6c 6c 29 0a | 58 09 09 09 09 28 28 4d |_small).|X....((M|
|00003ea0| 41 58 4a 53 41 4d 50 4c | 45 2b 31 29 20 2a 20 53 |AXJSAMPL|E+1) * S|
|00003eb0| 49 5a 45 4f 46 28 49 4e | 54 33 32 29 29 3b 0a 58 |IZEOF(IN|T32));.X|
|00003ec0| 20 20 43 62 5f 67 5f 74 | 61 62 20 3d 20 28 49 4e | Cb_g_t|ab = (IN|
|00003ed0| 54 33 32 20 2a 29 20 28 | 2a 63 69 6e 66 6f 2d 3e |T32 *) (|*cinfo->|
|00003ee0| 65 6d 65 74 68 6f 64 73 | 2d 3e 61 6c 6c 6f 63 5f |emethods|->alloc_|
|00003ef0| 73 6d 61 6c 6c 29 0a 58 | 09 09 09 09 28 28 4d 41 |small).X|....((MA|
|00003f00| 58 4a 53 41 4d 50 4c 45 | 2b 31 29 20 2a 20 53 49 |XJSAMPLE|+1) * SI|
|00003f10| 5a 45 4f 46 28 49 4e 54 | 33 32 29 29 3b 0a 58 0a |ZEOF(INT|32));.X.|
|00003f20| 58 20 20 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 |X for (|i = 0; i|
|00003f30| 20 3c 3d 20 4d 41 58 4a | 53 41 4d 50 4c 45 3b 20 | <= MAXJ|SAMPLE; |
|00003f40| 69 2b 2b 29 20 7b 0a 58 | 20 20 20 20 2f 2a 20 69 |i++) {.X| /* i|
|00003f50| 20 69 73 20 74 68 65 20 | 61 63 74 75 61 6c 20 69 | is the |actual i|
|00003f60| 6e 70 75 74 20 70 69 78 | 65 6c 20 76 61 6c 75 65 |nput pix|el value|
|00003f70| 2c 20 69 6e 20 74 68 65 | 20 72 61 6e 67 65 20 30 |, in the| range 0|
|00003f80| 2e 2e 4d 41 58 4a 53 41 | 4d 50 4c 45 20 2a 2f 0a |..MAXJSA|MPLE */.|
|00003f90| 58 20 20 20 20 2f 2a 20 | 54 68 65 20 43 62 20 6f |X /* |The Cb o|
|00003fa0| 72 20 43 72 20 76 61 6c | 75 65 20 77 65 20 61 72 |r Cr val|ue we ar|
|00003fb0| 65 20 74 68 69 6e 6b 69 | 6e 67 20 6f 66 20 69 73 |e thinki|ng of is|
|00003fc0| 20 78 20 3d 20 69 20 2d | 20 4d 41 58 4a 53 41 4d | x = i -| MAXJSAM|
|00003fd0| 50 4c 45 2f 32 20 2a 2f | 0a 58 20 20 20 20 78 32 |PLE/2 */|.X x2|
|00003fe0| 20 3d 20 32 2a 69 20 2d | 20 4d 41 58 4a 53 41 4d | = 2*i -| MAXJSAM|
|00003ff0| 50 4c 45 3b 09 2f 2a 20 | 74 77 69 63 65 20 78 20 |PLE;./* |twice x |
|00004000| 2a 2f 0a 58 20 20 20 20 | 2f 2a 20 43 72 3d 3e 52 |*/.X |/* Cr=>R|
|00004010| 20 76 61 6c 75 65 20 69 | 73 20 6e 65 61 72 65 73 | value i|s neares|
|00004020| 74 20 69 6e 74 20 74 6f | 20 31 2e 34 30 32 30 30 |t int to| 1.40200|
|00004030| 20 2a 20 78 20 2a 2f 0a | 58 20 20 20 20 43 72 5f | * x */.|X Cr_|
|00004040| 72 5f 74 61 62 5b 69 5d | 20 3d 20 28 69 6e 74 29 |r_tab[i]| = (int)|
|00004050| 0a 58 09 09 20 20 20 20 | 52 49 47 48 54 5f 53 48 |.X.. |RIGHT_SH|
|00004060| 49 46 54 28 46 49 58 28 | 31 2e 34 30 32 30 30 2f |IFT(FIX(|1.40200/|
|00004070| 32 29 20 2a 20 78 32 20 | 2b 20 4f 4e 45 5f 48 41 |2) * x2 |+ ONE_HA|
|00004080| 4c 46 2c 20 53 43 41 4c | 45 42 49 54 53 29 3b 0a |LF, SCAL|EBITS);.|
|00004090| 58 20 20 20 20 2f 2a 20 | 43 62 3d 3e 42 20 76 61 |X /* |Cb=>B va|
|000040a0| 6c 75 65 20 69 73 20 6e | 65 61 72 65 73 74 20 69 |lue is n|earest i|
|000040b0| 6e 74 20 74 6f 20 31 2e | 37 37 32 30 30 20 2a 20 |nt to 1.|77200 * |
|000040c0| 78 20 2a 2f 0a 58 20 20 | 20 20 43 62 5f 62 5f 74 |x */.X | Cb_b_t|
|000040d0| 61 62 5b 69 5d 20 3d 20 | 28 69 6e 74 29 0a 58 09 |ab[i] = |(int).X.|
|000040e0| 09 20 20 20 20 52 49 47 | 48 54 5f 53 48 49 46 54 |. RIG|HT_SHIFT|
|000040f0| 28 46 49 58 28 31 2e 37 | 37 32 30 30 2f 32 29 20 |(FIX(1.7|7200/2) |
|00004100| 2a 20 78 32 20 2b 20 4f | 4e 45 5f 48 41 4c 46 2c |* x2 + O|NE_HALF,|
|00004110| 20 53 43 41 4c 45 42 49 | 54 53 29 3b 0a 58 20 20 | SCALEBI|TS);.X |
|00004120| 20 20 2f 2a 20 43 72 3d | 3e 47 20 76 61 6c 75 65 | /* Cr=|>G value|
|00004130| 20 69 73 20 73 63 61 6c | 65 64 2d 75 70 20 2d 30 | is scal|ed-up -0|
|00004140| 2e 37 31 34 31 34 20 2a | 20 78 20 2a 2f 0a 58 20 |.71414 *| x */.X |
|00004150| 20 20 20 43 72 5f 67 5f | 74 61 62 5b 69 5d 20 3d | Cr_g_|tab[i] =|
|00004160| 20 28 2d 20 46 49 58 28 | 30 2e 37 31 34 31 34 2f | (- FIX(|0.71414/|
|00004170| 32 29 29 20 2a 20 78 32 | 3b 0a 58 20 20 20 20 2f |2)) * x2|;.X /|
|00004180| 2a 20 43 62 3d 3e 47 20 | 76 61 6c 75 65 20 69 73 |* Cb=>G |value is|
|00004190| 20 73 63 61 6c 65 64 2d | 75 70 20 2d 30 2e 33 34 | scaled-|up -0.34|
|000041a0| 34 31 34 20 2a 20 78 20 | 2a 2f 0a 58 20 20 20 20 |414 * x |*/.X |
|000041b0| 2f 2a 20 57 65 20 61 6c | 73 6f 20 61 64 64 20 69 |/* We al|so add i|
|000041c0| 6e 20 4f 4e 45 5f 48 41 | 4c 46 20 73 6f 20 74 68 |n ONE_HA|LF so th|
|000041d0| 61 74 20 6e 65 65 64 20 | 6e 6f 74 20 64 6f 20 69 |at need |not do i|
|000041e0| 74 20 69 6e 20 69 6e 6e | 65 72 20 6c 6f 6f 70 20 |t in inn|er loop |
|000041f0| 2a 2f 0a 58 20 20 20 20 | 43 62 5f 67 5f 74 61 62 |*/.X |Cb_g_tab|
|00004200| 5b 69 5d 20 3d 20 28 2d | 20 46 49 58 28 30 2e 33 |[i] = (-| FIX(0.3|
|00004210| 34 34 31 34 2f 32 29 29 | 20 2a 20 78 32 20 2b 20 |4414/2))| * x2 + |
|00004220| 4f 4e 45 5f 48 41 4c 46 | 3b 0a 58 20 20 7d 0a 58 |ONE_HALF|;.X }.X|
|00004230| 7d 0a 58 0a 58 0a 58 2f | 2a 0a 58 20 2a 20 43 6f |}.X.X.X/|*.X * Co|
|00004240| 6e 76 65 72 74 20 73 6f | 6d 65 20 72 6f 77 73 20 |nvert so|me rows |
|00004250| 6f 66 20 73 61 6d 70 6c | 65 73 20 74 6f 20 74 68 |of sampl|es to th|
|00004260| 65 20 6f 75 74 70 75 74 | 20 63 6f 6c 6f 72 73 70 |e output| colorsp|
|00004270| 61 63 65 2e 0a 58 20 2a | 2f 0a 58 0a 58 4d 45 54 |ace..X *|/.X.XMET|
|00004280| 48 4f 44 44 45 46 20 76 | 6f 69 64 0a 58 79 63 63 |HODDEF v|oid.Xycc|
|00004290| 5f 72 67 62 5f 63 6f 6e | 76 65 72 74 20 28 64 65 |_rgb_con|vert (de|
|000042a0| 63 6f 6d 70 72 65 73 73 | 5f 69 6e 66 6f 5f 70 74 |compress|_info_pt|
|000042b0| 72 20 63 69 6e 66 6f 2c | 20 69 6e 74 20 6e 75 6d |r cinfo,| int num|
|000042c0| 5f 72 6f 77 73 2c 20 6c | 6f 6e 67 20 6e 75 6d 5f |_rows, l|ong num_|
|000042d0| 63 6f 6c 73 2c 0a 58 09 | 09 20 4a 53 41 4d 50 49 |cols,.X.|. JSAMPI|
|000042e0| 4d 41 47 45 20 69 6e 70 | 75 74 5f 64 61 74 61 2c |MAGE inp|ut_data,|
|000042f0| 20 4a 53 41 4d 50 49 4d | 41 47 45 20 6f 75 74 70 | JSAMPIM|AGE outp|
|00004300| 75 74 5f 64 61 74 61 29 | 0a 58 7b 0a 58 23 69 66 |ut_data)|.X{.X#if|
|00004310| 64 65 66 20 53 49 58 54 | 45 45 4e 5f 42 49 54 5f |def SIXT|EEN_BIT_|
|00004320| 53 41 4d 50 4c 45 53 0a | 58 20 20 72 65 67 69 73 |SAMPLES.|X regis|
|00004330| 74 65 72 20 49 4e 54 33 | 32 20 79 3b 0a 58 20 20 |ter INT3|2 y;.X |
|00004340| 72 65 67 69 73 74 65 72 | 20 55 49 4e 54 31 36 20 |register| UINT16 |
|00004350| 63 62 2c 20 63 72 3b 0a | 58 23 65 6c 73 65 0a 58 |cb, cr;.|X#else.X|
|00004360| 20 20 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 79 | regist|er int y|
|00004370| 2c 20 63 62 2c 20 63 72 | 3b 0a 58 23 65 6e 64 69 |, cb, cr|;.X#endi|
|00004380| 66 0a 58 20 20 72 65 67 | 69 73 74 65 72 20 4a 53 |f.X reg|ister JS|
|00004390| 41 4d 50 52 4f 57 20 69 | 6e 70 74 72 30 2c 20 69 |AMPROW i|nptr0, i|
|000043a0| 6e 70 74 72 31 2c 20 69 | 6e 70 74 72 32 3b 0a 58 |nptr1, i|nptr2;.X|
|000043b0| 20 20 72 65 67 69 73 74 | 65 72 20 4a 53 41 4d 50 | regist|er JSAMP|
|000043c0| 52 4f 57 20 6f 75 74 70 | 74 72 30 2c 20 6f 75 74 |ROW outp|tr0, out|
|000043d0| 70 74 72 31 2c 20 6f 75 | 74 70 74 72 32 3b 0a 58 |ptr1, ou|tptr2;.X|
|000043e0| 20 20 72 65 67 69 73 74 | 65 72 20 6c 6f 6e 67 20 | regist|er long |
|000043f0| 63 6f 6c 3b 0a 58 20 20 | 2f 2a 20 63 6f 70 79 20 |col;.X |/* copy |
|00004400| 74 68 65 73 65 20 70 6f | 69 6e 74 65 72 73 20 69 |these po|inters i|
|00004410| 6e 74 6f 20 72 65 67 69 | 73 74 65 72 73 20 69 66 |nto regi|sters if|
|00004420| 20 70 6f 73 73 69 62 6c | 65 20 2a 2f 0a 58 20 20 | possibl|e */.X |
|00004430| 72 65 67 69 73 74 65 72 | 20 4a 53 41 4d 50 4c 45 |register| JSAMPLE|
|00004440| 20 2a 20 72 61 6e 67 65 | 5f 6c 69 6d 69 74 20 3d | * range|_limit =|
|00004450| 20 63 69 6e 66 6f 2d 3e | 73 61 6d 70 6c 65 5f 72 | cinfo->|sample_r|
|00004460| 61 6e 67 65 5f 6c 69 6d | 69 74 3b 0a 58 20 20 72 |ange_lim|it;.X r|
|00004470| 65 67 69 73 74 65 72 20 | 69 6e 74 20 2a 20 43 72 |egister |int * Cr|
|00004480| 72 74 61 62 20 3d 20 43 | 72 5f 72 5f 74 61 62 3b |rtab = C|r_r_tab;|
|00004490| 0a 58 20 20 72 65 67 69 | 73 74 65 72 20 69 6e 74 |.X regi|ster int|
|000044a0| 20 2a 20 43 62 62 74 61 | 62 20 3d 20 43 62 5f 62 | * Cbbta|b = Cb_b|
|000044b0| 5f 74 61 62 3b 0a 58 20 | 20 72 65 67 69 73 74 65 |_tab;.X | registe|
|000044c0| 72 20 49 4e 54 33 32 20 | 2a 20 43 72 67 74 61 62 |r INT32 |* Crgtab|
|000044d0| 20 3d 20 43 72 5f 67 5f | 74 61 62 3b 0a 58 20 20 | = Cr_g_|tab;.X |
|000044e0| 72 65 67 69 73 74 65 72 | 20 49 4e 54 33 32 20 2a |register| INT32 *|
|000044f0| 20 43 62 67 74 61 62 20 | 3d 20 43 62 5f 67 5f 74 | Cbgtab |= Cb_g_t|
|00004500| 61 62 3b 0a 58 20 20 69 | 6e 74 20 72 6f 77 3b 0a |ab;.X i|nt row;.|
|00004510| 58 20 20 53 48 49 46 54 | 5f 54 45 4d 50 53 0a 58 |X SHIFT|_TEMPS.X|
|00004520| 20 20 0a 58 20 20 66 6f | 72 20 28 72 6f 77 20 3d | .X fo|r (row =|
|00004530| 20 30 3b 20 72 6f 77 20 | 3c 20 6e 75 6d 5f 72 6f | 0; row |< num_ro|
|00004540| 77 73 3b 20 72 6f 77 2b | 2b 29 20 7b 0a 58 20 20 |ws; row+|+) {.X |
|00004550| 20 20 69 6e 70 74 72 30 | 20 3d 20 69 6e 70 75 74 | inptr0| = input|
|00004560| 5f 64 61 74 61 5b 30 5d | 5b 72 6f 77 5d 3b 0a 58 |_data[0]|[row];.X|
|00004570| 20 20 20 20 69 6e 70 74 | 72 31 20 3d 20 69 6e 70 | inpt|r1 = inp|
|00004580| 75 74 5f 64 61 74 61 5b | 31 5d 5b 72 6f 77 5d 3b |ut_data[|1][row];|
|00004590| 0a 58 20 20 20 20 69 6e | 70 74 72 32 20 3d 20 69 |.X in|ptr2 = i|
|000045a0| 6e 70 75 74 5f 64 61 74 | 61 5b 32 5d 5b 72 6f 77 |nput_dat|a[2][row|
|000045b0| 5d 3b 0a 58 20 20 20 20 | 6f 75 74 70 74 72 30 20 |];.X |outptr0 |
|000045c0| 3d 20 6f 75 74 70 75 74 | 5f 64 61 74 61 5b 30 5d |= output|_data[0]|
|000045d0| 5b 72 6f 77 5d 3b 0a 58 | 20 20 20 20 6f 75 74 70 |[row];.X| outp|
|000045e0| 74 72 31 20 3d 20 6f 75 | 74 70 75 74 5f 64 61 74 |tr1 = ou|tput_dat|
|000045f0| 61 5b 31 5d 5b 72 6f 77 | 5d 3b 0a 58 20 20 20 20 |a[1][row|];.X |
|00004600| 6f 75 74 70 74 72 32 20 | 3d 20 6f 75 74 70 75 74 |outptr2 |= output|
|00004610| 5f 64 61 74 61 5b 32 5d | 5b 72 6f 77 5d 3b 0a 58 |_data[2]|[row];.X|
|00004620| 20 20 20 20 66 6f 72 20 | 28 63 6f 6c 20 3d 20 30 | for |(col = 0|
|00004630| 3b 20 63 6f 6c 20 3c 20 | 6e 75 6d 5f 63 6f 6c 73 |; col < |num_cols|
|00004640| 3b 20 63 6f 6c 2b 2b 29 | 20 7b 0a 58 20 20 20 20 |; col++)| {.X |
|00004650| 20 20 79 20 20 3d 20 47 | 45 54 4a 53 41 4d 50 4c | y = G|ETJSAMPL|
|00004660| 45 28 69 6e 70 74 72 30 | 5b 63 6f 6c 5d 29 3b 0a |E(inptr0|[col]);.|
|00004670| 58 20 20 20 20 20 20 63 | 62 20 3d 20 47 45 54 4a |X c|b = GETJ|
|00004680| 53 41 4d 50 4c 45 28 69 | 6e 70 74 72 31 5b 63 6f |SAMPLE(i|nptr1[co|
|00004690| 6c 5d 29 3b 0a 58 20 20 | 20 20 20 20 63 72 20 3d |l]);.X | cr =|
|000046a0| 20 47 45 54 4a 53 41 4d | 50 4c 45 28 69 6e 70 74 | GETJSAM|PLE(inpt|
|000046b0| 72 32 5b 63 6f 6c 5d 29 | 3b 0a 58 20 20 20 20 20 |r2[col])|;.X |
|000046c0| 20 2f 2a 20 4e 6f 74 65 | 3a 20 69 66 20 74 68 65 | /* Note|: if the|
|000046d0| 20 69 6e 70 75 74 73 20 | 77 65 72 65 20 63 6f 6d | inputs |were com|
|000046e0| 70 75 74 65 64 20 64 69 | 72 65 63 74 6c 79 20 66 |puted di|rectly f|
|000046f0| 72 6f 6d 20 52 47 42 20 | 76 61 6c 75 65 73 2c 0a |rom RGB |values,.|
|00004700| 58 20 20 20 20 20 20 20 | 2a 20 72 61 6e 67 65 2d |X |* range-|
|00004710| 6c 69 6d 69 74 69 6e 67 | 20 77 6f 75 6c 64 20 62 |limiting| would b|
|00004720| 65 20 75 6e 6e 65 63 65 | 73 73 61 72 79 20 68 65 |e unnece|ssary he|
|00004730| 72 65 3b 20 62 75 74 20 | 64 75 65 20 74 6f 20 70 |re; but |due to p|
|00004740| 6f 73 73 69 62 6c 65 0a | 58 20 20 20 20 20 20 20 |ossible.|X |
|00004750| 2a 20 6e 6f 69 73 65 20 | 69 6e 20 74 68 65 20 44 |* noise |in the D|
|00004760| 43 54 2f 49 44 43 54 20 | 70 68 61 73 65 2c 20 77 |CT/IDCT |phase, w|
|00004770| 65 20 64 6f 20 6e 65 65 | 64 20 74 6f 20 61 70 70 |e do nee|d to app|
|00004780| 6c 79 20 72 61 6e 67 65 | 20 6c 69 6d 69 74 73 2e |ly range| limits.|
|00004790| 0a 58 20 20 20 20 20 20 | 20 2a 2f 0a 58 20 20 20 |.X | */.X |
|000047a0| 20 20 20 6f 75 74 70 74 | 72 30 5b 63 6f 6c 5d 20 | outpt|r0[col] |
|000047b0| 3d 20 72 61 6e 67 65 5f | 6c 69 6d 69 74 5b 79 20 |= range_|limit[y |
|000047c0| 2b 20 43 72 72 74 61 62 | 5b 63 72 5d 5d 3b 09 2f |+ Crrtab|[cr]];./|
|000047d0| 2a 20 72 65 64 20 2a 2f | 0a 58 20 20 20 20 20 20 |* red */|.X |
|000047e0| 6f 75 74 70 74 72 31 5b | 63 6f 6c 5d 20 3d 20 72 |outptr1[|col] = r|
|000047f0| 61 6e 67 65 5f 6c 69 6d | 69 74 5b 79 20 2b 09 09 |ange_lim|it[y +..|
|00004800| 09 2f 2a 20 67 72 65 65 | 6e 20 2a 2f 0a 58 09 09 |./* gree|n */.X..|
|00004810| 09 09 20 28 28 69 6e 74 | 29 20 52 49 47 48 54 5f |.. ((int|) RIGHT_|
|00004820| 53 48 49 46 54 28 43 62 | 67 74 61 62 5b 63 62 5d |SHIFT(Cb|gtab[cb]|
|00004830| 20 2b 20 43 72 67 74 61 | 62 5b 63 72 5d 2c 0a 58 | + Crgta|b[cr],.X|
|00004840| 09 09 09 09 09 09 20 20 | 20 20 53 43 41 4c 45 42 |...... | SCALEB|
|00004850| 49 54 53 29 29 5d 3b 0a | 58 20 20 20 20 20 20 6f |ITS))];.|X o|
|00004860| 75 74 70 74 72 32 5b 63 | 6f 6c 5d 20 3d 20 72 61 |utptr2[c|ol] = ra|
|00004870| 6e 67 65 5f 6c 69 6d 69 | 74 5b 79 20 2b 20 43 62 |nge_limi|t[y + Cb|
|00004880| 62 74 61 62 5b 63 62 5d | 5d 3b 09 2f 2a 20 62 6c |btab[cb]|];./* bl|
|00004890| 75 65 20 2a 2f 0a 58 20 | 20 20 20 7d 0a 58 20 20 |ue */.X | }.X |
|000048a0| 7d 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 20 2a |}.X}.X.X|.X/*.X *|
|000048b0| 20 46 69 6e 69 73 68 20 | 75 70 20 61 74 20 74 68 | Finish |up at th|
|000048c0| 65 20 65 6e 64 20 6f 66 | 20 74 68 65 20 66 69 6c |e end of| the fil|
|000048d0| 65 2e 0a 58 20 2a 2f 0a | 58 0a 58 4d 45 54 48 4f |e..X */.|X.XMETHO|
|000048e0| 44 44 45 46 20 76 6f 69 | 64 0a 58 79 63 63 5f 72 |DDEF voi|d.Xycc_r|
|000048f0| 67 62 5f 74 65 72 6d 20 | 28 64 65 63 6f 6d 70 72 |gb_term |(decompr|
|00004900| 65 73 73 5f 69 6e 66 6f | 5f 70 74 72 20 63 69 6e |ess_info|_ptr cin|
|00004910| 66 6f 29 0a 58 7b 0a 58 | 20 20 2f 2a 20 6e 6f 20 |fo).X{.X| /* no |
|00004920| 77 6f 72 6b 20 28 77 65 | 20 6c 65 74 20 66 72 65 |work (we| let fre|
|00004930| 65 5f 61 6c 6c 20 72 65 | 6c 65 61 73 65 20 74 68 |e_all re|lease th|
|00004940| 65 20 77 6f 72 6b 73 70 | 61 63 65 29 20 2a 2f 0a |e worksp|ace) */.|
|00004950| 58 7d 0a 58 0a 58 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |X}.X.X.X|/*******|
|00004960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 20 43 61 73 65 73 20 |********|* Cases |
|00004970| 6f 74 68 65 72 20 74 68 | 61 6e 20 59 43 62 43 72 |other th|an YCbCr|
|00004980| 20 2d 3e 20 52 47 42 20 | 2a 2a 2a 2a 2a 2a 2a 2a | -> RGB |********|
|00004990| 2a 2a 2a 2a 2a 2a 2f 0a | 58 0a 58 0a 58 2f 2a 0a |******/.|X.X.X/*.|
|000049a0| 58 20 2a 20 49 6e 69 74 | 69 61 6c 69 7a 65 20 66 |X * Init|ialize f|
|000049b0| 6f 72 20 63 6f 6c 6f 72 | 73 70 61 63 65 20 63 6f |or color|space co|
|000049c0| 6e 76 65 72 73 69 6f 6e | 2e 0a 58 20 2a 2f 0a 58 |nversion|..X */.X|
|000049d0| 0a 58 4d 45 54 48 4f 44 | 44 45 46 20 76 6f 69 64 |.XMETHOD|DEF void|
|000049e0| 0a 58 6e 75 6c 6c 5f 69 | 6e 69 74 20 28 64 65 63 |.Xnull_i|nit (dec|
|000049f0| 6f 6d 70 72 65 73 73 5f | 69 6e 66 6f 5f 70 74 72 |ompress_|info_ptr|
|00004a00| 20 63 69 6e 66 6f 29 0a | 58 2f 2a 20 63 6f 6c 6f | cinfo).|X/* colo|
|00004a10| 72 6f 75 74 5f 69 6e 69 | 74 20 66 6f 72 20 63 61 |rout_ini|t for ca|
|00004a20| 73 65 73 20 77 68 65 72 | 65 20 6e 6f 20 73 65 74 |ses wher|e no set|
|00004a30| 75 70 20 69 73 20 6e 65 | 65 64 65 64 20 2a 2f 0a |up is ne|eded */.|
|00004a40| 58 7b 0a 58 20 20 2f 2a | 20 6e 6f 20 77 6f 72 6b |X{.X /*| no work|
|00004a50| 20 6e 65 65 64 65 64 20 | 2a 2f 0a 58 7d 0a 58 0a | needed |*/.X}.X.|
|00004a60| 58 0a 58 2f 2a 0a 58 20 | 2a 20 43 6f 6c 6f 72 20 |X.X/*.X |* Color |
|00004a70| 63 6f 6e 76 65 72 73 69 | 6f 6e 20 66 6f 72 20 6e |conversi|on for n|
|00004a80| 6f 20 63 6f 6c 6f 72 73 | 70 61 63 65 20 63 68 61 |o colors|pace cha|
|00004a90| 6e 67 65 3a 20 6a 75 73 | 74 20 63 6f 70 79 20 74 |nge: jus|t copy t|
|00004aa0| 68 65 20 64 61 74 61 2e | 0a 58 20 2a 2f 0a 58 0a |he data.|.X */.X.|
|00004ab0| 58 4d 45 54 48 4f 44 44 | 45 46 20 76 6f 69 64 0a |XMETHODD|EF void.|
|00004ac0| 58 6e 75 6c 6c 5f 63 6f | 6e 76 65 72 74 20 28 64 |Xnull_co|nvert (d|
|00004ad0| 65 63 6f 6d 70 72 65 73 | 73 5f 69 6e 66 6f 5f 70 |ecompres|s_info_p|
|00004ae0| 74 72 20 63 69 6e 66 6f | 2c 20 69 6e 74 20 6e 75 |tr cinfo|, int nu|
|00004af0| 6d 5f 72 6f 77 73 2c 20 | 6c 6f 6e 67 20 6e 75 6d |m_rows, |long num|
|00004b00| 5f 63 6f 6c 73 2c 0a 58 | 09 20 20 20 20 20 20 4a |_cols,.X|. J|
|00004b10| 53 41 4d 50 49 4d 41 47 | 45 20 69 6e 70 75 74 5f |SAMPIMAG|E input_|
|00004b20| 64 61 74 61 2c 20 4a 53 | 41 4d 50 49 4d 41 47 45 |data, JS|AMPIMAGE|
|00004b30| 20 6f 75 74 70 75 74 5f | 64 61 74 61 29 0a 58 7b | output_|data).X{|
|00004b40| 0a 58 20 20 73 68 6f 72 | 74 20 63 69 3b 0a 58 0a |.X shor|t ci;.X.|
|00004b50| 58 20 20 66 6f 72 20 28 | 63 69 20 3d 20 30 3b 20 |X for (|ci = 0; |
|00004b60| 63 69 20 3c 20 63 69 6e | 66 6f 2d 3e 6e 75 6d 5f |ci < cin|fo->num_|
|00004b70| 63 6f 6d 70 6f 6e 65 6e | 74 73 3b 20 63 69 2b 2b |componen|ts; ci++|
|00004b80| 29 20 7b 0a 58 20 20 20 | 20 6a 63 6f 70 79 5f 73 |) {.X | jcopy_s|
|00004b90| 61 6d 70 6c 65 5f 72 6f | 77 73 28 69 6e 70 75 74 |ample_ro|ws(input|
|00004ba0| 5f 64 61 74 61 5b 63 69 | 5d 2c 20 30 2c 20 6f 75 |_data[ci|], 0, ou|
|00004bb0| 74 70 75 74 5f 64 61 74 | 61 5b 63 69 5d 2c 20 30 |tput_dat|a[ci], 0|
|00004bc0| 2c 0a 58 09 09 20 20 20 | 20 20 20 6e 75 6d 5f 72 |,.X.. | num_r|
|00004bd0| 6f 77 73 2c 20 6e 75 6d | 5f 63 6f 6c 73 29 3b 0a |ows, num|_cols);.|
|00004be0| 58 20 20 7d 0a 58 7d 0a | 58 0a 58 0a 58 2f 2a 0a |X }.X}.|X.X.X/*.|
|00004bf0| 58 20 2a 20 43 6f 6c 6f | 72 20 63 6f 6e 76 65 72 |X * Colo|r conver|
|00004c00| 73 69 6f 6e 20 66 6f 72 | 20 67 72 61 79 73 63 61 |sion for| graysca|
|00004c10| 6c 65 3a 20 6a 75 73 74 | 20 63 6f 70 79 20 74 68 |le: just| copy th|
|00004c20| 65 20 64 61 74 61 2e 0a | 58 20 2a 20 54 68 69 73 |e data..|X * This|
|00004c30| 20 61 6c 73 6f 20 77 6f | 72 6b 73 20 66 6f 72 20 | also wo|rks for |
|00004c40| 59 43 62 43 72 2f 59 49 | 51 20 2d 3e 20 67 72 61 |YCbCr/YI|Q -> gra|
|00004c50| 79 73 63 61 6c 65 20 63 | 6f 6e 76 65 72 73 69 6f |yscale c|onversio|
|00004c60| 6e 2c 20 69 6e 20 77 68 | 69 63 68 0a 58 20 2a 20 |n, in wh|ich.X * |
|00004c70| 77 65 20 6a 75 73 74 20 | 63 6f 70 79 20 74 68 65 |we just |copy the|
|00004c80| 20 59 20 28 6c 75 6d 69 | 6e 61 6e 63 65 29 20 63 | Y (lumi|nance) c|
|00004c90| 6f 6d 70 6f 6e 65 6e 74 | 20 61 6e 64 20 69 67 6e |omponent| and ign|
|00004ca0| 6f 72 65 20 63 68 72 6f | 6d 69 6e 61 6e 63 65 2e |ore chro|minance.|
|00004cb0| 0a 58 20 2a 2f 0a 58 0a | 58 4d 45 54 48 4f 44 44 |.X */.X.|XMETHODD|
|00004cc0| 45 46 20 76 6f 69 64 0a | 58 67 72 61 79 73 63 61 |EF void.|Xgraysca|
|00004cd0| 6c 65 5f 63 6f 6e 76 65 | 72 74 20 28 64 65 63 6f |le_conve|rt (deco|
|00004ce0| 6d 70 72 65 73 73 5f 69 | 6e 66 6f 5f 70 74 72 20 |mpress_i|nfo_ptr |
|00004cf0| 63 69 6e 66 6f 2c 20 69 | 6e 74 20 6e 75 6d 5f 72 |cinfo, i|nt num_r|
|00004d00| 6f 77 73 2c 20 6c 6f 6e | 67 20 6e 75 6d 5f 63 6f |ows, lon|g num_co|
|00004d10| 6c 73 2c 0a 58 09 09 20 | 20 20 4a 53 41 4d 50 49 |ls,.X.. | JSAMPI|
|00004d20| 4d 41 47 45 20 69 6e 70 | 75 74 5f 64 61 74 61 2c |MAGE inp|ut_data,|
|00004d30| 20 4a 53 41 4d 50 49 4d | 41 47 45 20 6f 75 74 70 | JSAMPIM|AGE outp|
|00004d40| 75 74 5f 64 61 74 61 29 | 0a 58 7b 0a 58 20 20 6a |ut_data)|.X{.X j|
|00004d50| 63 6f 70 79 5f 73 61 6d | 70 6c 65 5f 72 6f 77 73 |copy_sam|ple_rows|
|00004d60| 28 69 6e 70 75 74 5f 64 | 61 74 61 5b 30 5d 2c 20 |(input_d|ata[0], |
|00004d70| 30 2c 20 6f 75 74 70 75 | 74 5f 64 61 74 61 5b 30 |0, outpu|t_data[0|
|00004d80| 5d 2c 20 30 2c 0a 58 09 | 09 20 20 20 20 6e 75 6d |], 0,.X.|. num|
|00004d90| 5f 72 6f 77 73 2c 20 6e | 75 6d 5f 63 6f 6c 73 29 |_rows, n|um_cols)|
|00004da0| 3b 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 20 2a |;.X}.X.X|.X/*.X *|
|00004db0| 20 46 69 6e 69 73 68 20 | 75 70 20 61 74 20 74 68 | Finish |up at th|
|00004dc0| 65 20 65 6e 64 20 6f 66 | 20 74 68 65 20 66 69 6c |e end of| the fil|
|00004dd0| 65 2e 0a 58 20 2a 2f 0a | 58 0a 58 4d 45 54 48 4f |e..X */.|X.XMETHO|
|00004de0| 44 44 45 46 20 76 6f 69 | 64 0a 58 6e 75 6c 6c 5f |DDEF voi|d.Xnull_|
|00004df0| 74 65 72 6d 20 28 64 65 | 63 6f 6d 70 72 65 73 73 |term (de|compress|
|00004e00| 5f 69 6e 66 6f 5f 70 74 | 72 20 63 69 6e 66 6f 29 |_info_pt|r cinfo)|
|00004e10| 0a 58 2f 2a 20 63 6f 6c | 6f 72 6f 75 74 5f 74 65 |.X/* col|orout_te|
|00004e20| 72 6d 20 66 6f 72 20 63 | 61 73 65 73 20 77 68 65 |rm for c|ases whe|
|00004e30| 72 65 20 6e 6f 20 74 65 | 61 72 64 6f 77 6e 20 69 |re no te|ardown i|
|00004e40| 73 20 6e 65 65 64 65 64 | 20 2a 2f 0a 58 7b 0a 58 |s needed| */.X{.X|
|00004e50| 20 20 2f 2a 20 6e 6f 20 | 77 6f 72 6b 20 6e 65 65 | /* no |work nee|
|00004e60| 64 65 64 20 2a 2f 0a 58 | 7d 0a 58 0a 58 0a 58 0a |ded */.X|}.X.X.X.|
|00004e70| 58 2f 2a 0a 58 20 2a 20 | 54 68 65 20 6d 65 74 68 |X/*.X * |The meth|
|00004e80| 6f 64 20 73 65 6c 65 63 | 74 69 6f 6e 20 72 6f 75 |od selec|tion rou|
|00004e90| 74 69 6e 65 20 66 6f 72 | 20 6f 75 74 70 75 74 20 |tine for| output |
|00004ea0| 63 6f 6c 6f 72 73 70 61 | 63 65 20 63 6f 6e 76 65 |colorspa|ce conve|
|00004eb0| 72 73 69 6f 6e 2e 0a 58 | 20 2a 2f 0a 58 0a 58 47 |rsion..X| */.X.XG|
|00004ec0| 4c 4f 42 41 4c 20 76 6f | 69 64 0a 58 6a 73 65 6c |LOBAL vo|id.Xjsel|
|00004ed0| 64 63 6f 6c 6f 72 20 28 | 64 65 63 6f 6d 70 72 65 |dcolor (|decompre|
|00004ee0| 73 73 5f 69 6e 66 6f 5f | 70 74 72 20 63 69 6e 66 |ss_info_|ptr cinf|
|00004ef0| 6f 29 0a 58 7b 0a 58 20 | 20 2f 2a 20 4d 61 6b 65 |o).X{.X | /* Make|
|00004f00| 20 73 75 72 65 20 6e 75 | 6d 5f 63 6f 6d 70 6f 6e | sure nu|m_compon|
|00004f10| 65 6e 74 73 20 61 67 72 | 65 65 73 20 77 69 74 68 |ents agr|ees with|
|00004f20| 20 6a 70 65 67 5f 63 6f | 6c 6f 72 5f 73 70 61 63 | jpeg_co|lor_spac|
|00004f30| 65 20 2a 2f 0a 58 20 20 | 73 77 69 74 63 68 20 28 |e */.X |switch (|
|00004f40| 63 69 6e 66 6f 2d 3e 6a | 70 65 67 5f 63 6f 6c 6f |cinfo->j|peg_colo|
|00004f50| 72 5f 73 70 61 63 65 29 | 20 7b 0a 58 20 20 63 61 |r_space)| {.X ca|
|00004f60| 73 65 20 43 53 5f 47 52 | 41 59 53 43 41 4c 45 3a |se CS_GR|AYSCALE:|
|00004f70| 0a 58 20 20 20 20 69 66 | 20 28 63 69 6e 66 6f 2d |.X if| (cinfo-|
|00004f80| 3e 6e 75 6d 5f 63 6f 6d | 70 6f 6e 65 6e 74 73 20 |>num_com|ponents |
|00004f90| 21 3d 20 31 29 0a 58 20 | 20 20 20 20 20 45 52 52 |!= 1).X | ERR|
|00004fa0| 45 58 49 54 28 63 69 6e | 66 6f 2d 3e 65 6d 65 74 |EXIT(cin|fo->emet|
|00004fb0| 68 6f 64 73 2c 20 22 42 | 6f 67 75 73 20 4a 50 45 |hods, "B|ogus JPE|
|00004fc0| 47 20 63 6f 6c 6f 72 73 | 70 61 63 65 22 29 3b 0a |G colors|pace");.|
|00004fd0| 58 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 0a 58 20 |X bre|ak;.X.X |
|00004fe0| 20 63 61 73 65 20 43 53 | 5f 52 47 42 3a 0a 58 20 | case CS|_RGB:.X |
|00004ff0| 20 63 61 73 65 20 43 53 | 5f 59 43 62 43 72 3a 0a | case CS|_YCbCr:.|
|00005000| 58 20 20 63 61 73 65 20 | 43 53 5f 59 49 51 3a 0a |X case |CS_YIQ:.|
|00005010| 58 20 20 20 20 69 66 20 | 28 63 69 6e 66 6f 2d 3e |X if |(cinfo->|
|00005020| 6e 75 6d 5f 63 6f 6d 70 | 6f 6e 65 6e 74 73 20 21 |num_comp|onents !|
|00005030| 3d 20 33 29 0a 58 20 20 | 20 20 20 20 45 52 52 45 |= 3).X | ERRE|
|00005040| 58 49 54 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |XIT(cinf|o->emeth|
|00005050| 6f 64 73 2c 20 22 42 6f | 67 75 73 20 4a 50 45 47 |ods, "Bo|gus JPEG|
|00005060| 20 63 6f 6c 6f 72 73 70 | 61 63 65 22 29 3b 0a 58 | colorsp|ace");.X|
|00005070| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 0a 58 20 20 | brea|k;.X.X |
|00005080| 63 61 73 65 20 43 53 5f | 43 4d 59 4b 3a 0a 58 20 |case CS_|CMYK:.X |
|00005090| 20 20 20 69 66 20 28 63 | 69 6e 66 6f 2d 3e 6e 75 | if (c|info->nu|
|000050a0| 6d 5f 63 6f 6d 70 6f 6e | 65 6e 74 73 20 21 3d 20 |m_compon|ents != |
|000050b0| 34 29 0a 58 20 20 20 20 | 20 20 45 52 52 45 58 49 |4).X | ERREXI|
|000050c0| 54 28 63 69 6e 66 6f 2d | 3e 65 6d 65 74 68 6f 64 |T(cinfo-|>emethod|
|000050d0| 73 2c 20 22 42 6f 67 75 | 73 20 4a 50 45 47 20 63 |s, "Bogu|s JPEG c|
|000050e0| 6f 6c 6f 72 73 70 61 63 | 65 22 29 3b 0a 58 20 20 |olorspac|e");.X |
|000050f0| 20 20 62 72 65 61 6b 3b | 0a 58 0a 58 20 20 64 65 | break;|.X.X de|
|00005100| 66 61 75 6c 74 3a 0a 58 | 20 20 20 20 45 52 52 45 |fault:.X| ERRE|
|00005110| 58 49 54 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |XIT(cinf|o->emeth|
|00005120| 6f 64 73 2c 20 22 55 6e | 73 75 70 70 6f 72 74 65 |ods, "Un|supporte|
|00005130| 64 20 4a 50 45 47 20 63 | 6f 6c 6f 72 73 70 61 63 |d JPEG c|olorspac|
|00005140| 65 22 29 3b 0a 58 20 20 | 20 20 62 72 65 61 6b 3b |e");.X | break;|
|00005150| 0a 58 20 20 7d 0a 58 0a | 58 20 20 2f 2a 20 53 65 |.X }.X.|X /* Se|
|00005160| 74 20 63 6f 6c 6f 72 5f | 6f 75 74 5f 63 6f 6d 70 |t color_|out_comp|
|00005170| 73 20 61 6e 64 20 63 6f | 6e 76 65 72 73 69 6f 6e |s and co|nversion|
|00005180| 20 6d 65 74 68 6f 64 20 | 62 61 73 65 64 20 6f 6e | method |based on|
|00005190| 20 72 65 71 75 65 73 74 | 65 64 20 73 70 61 63 65 | request|ed space|
|000051a0| 20 2a 2f 0a 58 20 20 73 | 77 69 74 63 68 20 28 63 | */.X s|witch (c|
|000051b0| 69 6e 66 6f 2d 3e 6f 75 | 74 5f 63 6f 6c 6f 72 5f |info->ou|t_color_|
|000051c0| 73 70 61 63 65 29 20 7b | 0a 58 20 20 63 61 73 65 |space) {|.X case|
|000051d0| 20 43 53 5f 47 52 41 59 | 53 43 41 4c 45 3a 0a 58 | CS_GRAY|SCALE:.X|
|000051e0| 20 20 20 20 63 69 6e 66 | 6f 2d 3e 63 6f 6c 6f 72 | cinf|o->color|
|000051f0| 5f 6f 75 74 5f 63 6f 6d | 70 73 20 3d 20 31 3b 0a |_out_com|ps = 1;.|
|00005200| 58 20 20 20 20 69 66 20 | 28 63 69 6e 66 6f 2d 3e |X if |(cinfo->|
|00005210| 6a 70 65 67 5f 63 6f 6c | 6f 72 5f 73 70 61 63 65 |jpeg_col|or_space|
|00005220| 20 3d 3d 20 43 53 5f 47 | 52 41 59 53 43 41 4c 45 | == CS_G|RAYSCALE|
|00005230| 20 7c 7c 0a 58 09 63 69 | 6e 66 6f 2d 3e 6a 70 65 | ||.X.ci|nfo->jpe|
|00005240| 67 5f 63 6f 6c 6f 72 5f | 73 70 61 63 65 20 3d 3d |g_color_|space ==|
|00005250| 20 43 53 5f 59 43 62 43 | 72 20 7c 7c 0a 58 09 63 | CS_YCbC|r ||.X.c|
|00005260| 69 6e 66 6f 2d 3e 6a 70 | 65 67 5f 63 6f 6c 6f 72 |info->jp|eg_color|
|00005270| 5f 73 70 61 63 65 20 3d | 3d 20 43 53 5f 59 49 51 |_space =|= CS_YIQ|
|00005280| 29 20 7b 0a 58 20 20 20 | 20 20 20 63 69 6e 66 6f |) {.X | cinfo|
|00005290| 2d 3e 6d 65 74 68 6f 64 | 73 2d 3e 63 6f 6c 6f 72 |->method|s->color|
|000052a0| 5f 63 6f 6e 76 65 72 74 | 20 3d 20 67 72 61 79 73 |_convert| = grays|
|000052b0| 63 61 6c 65 5f 63 6f 6e | 76 65 72 74 3b 0a 58 20 |cale_con|vert;.X |
|000052c0| 20 20 20 20 20 63 69 6e | 66 6f 2d 3e 6d 65 74 68 | cin|fo->meth|
|000052d0| 6f 64 73 2d 3e 63 6f 6c | 6f 72 6f 75 74 5f 69 6e |ods->col|orout_in|
|000052e0| 69 74 20 3d 20 6e 75 6c | 6c 5f 69 6e 69 74 3b 0a |it = nul|l_init;.|
|000052f0| 58 20 20 20 20 20 20 63 | 69 6e 66 6f 2d 3e 6d 65 |X c|info->me|
|00005300| 74 68 6f 64 73 2d 3e 63 | 6f 6c 6f 72 6f 75 74 5f |thods->c|olorout_|
|00005310| 74 65 72 6d 20 3d 20 6e | 75 6c 6c 5f 74 65 72 6d |term = n|ull_term|
|00005320| 3b 0a 58 20 20 20 20 7d | 20 65 6c 73 65 0a 58 20 |;.X }| else.X |
|00005330| 20 20 20 20 20 45 52 52 | 45 58 49 54 28 63 69 6e | ERR|EXIT(cin|
|00005340| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2c 20 22 55 |fo->emet|hods, "U|
|00005350| 6e 73 75 70 70 6f 72 74 | 65 64 20 63 6f 6c 6f 72 |nsupport|ed color|
|00005360| 20 63 6f 6e 76 65 72 73 | 69 6f 6e 20 72 65 71 75 | convers|ion requ|
|00005370| 65 73 74 22 29 3b 0a 58 | 20 20 20 20 62 72 65 61 |est");.X| brea|
|00005380| 6b 3b 0a 58 0a 58 20 20 | 63 61 73 65 20 43 53 5f |k;.X.X |case CS_|
|00005390| 52 47 42 3a 0a 58 20 20 | 20 20 63 69 6e 66 6f 2d |RGB:.X | cinfo-|
|000053a0| 3e 63 6f 6c 6f 72 5f 6f | 75 74 5f 63 6f 6d 70 73 |>color_o|ut_comps|
|000053b0| 20 3d 20 33 3b 0a 58 20 | 20 20 20 69 66 20 28 63 | = 3;.X | if (c|
|000053c0| 69 6e 66 6f 2d 3e 6a 70 | 65 67 5f 63 6f 6c 6f 72 |info->jp|eg_color|
|000053d0| 5f 73 70 61 63 65 20 3d | 3d 20 43 53 5f 59 43 62 |_space =|= CS_YCb|
|000053e0| 43 72 29 20 7b 0a 58 20 | 20 20 20 20 20 63 69 6e |Cr) {.X | cin|
|000053f0| 66 6f 2d 3e 6d 65 74 68 | 6f 64 73 2d 3e 63 6f 6c |fo->meth|ods->col|
|00005400| 6f 72 5f 63 6f 6e 76 65 | 72 74 20 3d 20 79 63 63 |or_conve|rt = ycc|
|00005410| 5f 72 67 62 5f 63 6f 6e | 76 65 72 74 3b 0a 58 20 |_rgb_con|vert;.X |
|00005420| 20 20 20 20 20 63 69 6e | 66 6f 2d 3e 6d 65 74 68 | cin|fo->meth|
|00005430| 6f 64 73 2d 3e 63 6f 6c | 6f 72 6f 75 74 5f 69 6e |ods->col|orout_in|
|00005440| 69 74 20 3d 20 79 63 63 | 5f 72 67 62 5f 69 6e 69 |it = ycc|_rgb_ini|
|00005450| 74 3b 0a 58 20 20 20 20 | 20 20 63 69 6e 66 6f 2d |t;.X | cinfo-|
|00005460| 3e 6d 65 74 68 6f 64 73 | 2d 3e 63 6f 6c 6f 72 6f |>methods|->coloro|
|00005470| 75 74 5f 74 65 72 6d 20 | 3d 20 79 63 63 5f 72 67 |ut_term |= ycc_rg|
|00005480| 62 5f 74 65 72 6d 3b 0a | 58 20 20 20 20 7d 20 65 |b_term;.|X } e|
|00005490| 6c 73 65 20 69 66 20 28 | 63 69 6e 66 6f 2d 3e 6a |lse if (|cinfo->j|
|000054a0| 70 65 67 5f 63 6f 6c 6f | 72 5f 73 70 61 63 65 20 |peg_colo|r_space |
|000054b0| 3d 3d 20 43 53 5f 52 47 | 42 29 20 7b 0a 58 20 20 |== CS_RG|B) {.X |
|000054c0| 20 20 20 20 63 69 6e 66 | 6f 2d 3e 6d 65 74 68 6f | cinf|o->metho|
|000054d0| 64 73 2d 3e 63 6f 6c 6f | 72 5f 63 6f 6e 76 65 72 |ds->colo|r_conver|
|000054e0| 74 20 3d 20 6e 75 6c 6c | 5f 63 6f 6e 76 65 72 74 |t = null|_convert|
|000054f0| 3b 0a 58 20 20 20 20 20 | 20 63 69 6e 66 6f 2d 3e |;.X | cinfo->|
|00005500| 6d 65 74 68 6f 64 73 2d | 3e 63 6f 6c 6f 72 6f 75 |methods-|>colorou|
|00005510| 74 5f 69 6e 69 74 20 3d | 20 6e 75 6c 6c 5f 69 6e |t_init =| null_in|
|00005520| 69 74 3b 0a 58 20 20 20 | 20 20 20 63 69 6e 66 6f |it;.X | cinfo|
|00005530| 2d 3e 6d 65 74 68 6f 64 | 73 2d 3e 63 6f 6c 6f 72 |->method|s->color|
|00005540| 6f 75 74 5f 74 65 72 6d | 20 3d 20 6e 75 6c 6c 5f |out_term| = null_|
|00005550| 74 65 72 6d 3b 0a 58 20 | 20 20 20 7d 20 65 6c 73 |term;.X | } els|
|00005560| 65 0a 58 20 20 20 20 20 | 20 45 52 52 45 58 49 54 |e.X | ERREXIT|
|00005570| 28 63 69 6e 66 6f 2d 3e | 65 6d 65 74 68 6f 64 73 |(cinfo->|emethods|
|00005580| 2c 20 22 55 6e 73 75 70 | 70 6f 72 74 65 64 20 63 |, "Unsup|ported c|
|00005590| 6f 6c 6f 72 20 63 6f 6e | 76 65 72 73 69 6f 6e 20 |olor con|version |
|000055a0| 72 65 71 75 65 73 74 22 | 29 3b 0a 58 20 20 20 20 |request"|);.X |
|000055b0| 62 72 65 61 6b 3b 0a 58 | 0a 58 20 20 64 65 66 61 |break;.X|.X defa|
|000055c0| 75 6c 74 3a 0a 58 20 20 | 20 20 2f 2a 20 50 65 72 |ult:.X | /* Per|
|000055d0| 6d 69 74 20 6e 75 6c 6c | 20 63 6f 6e 76 65 72 73 |mit null| convers|
|000055e0| 69 6f 6e 20 66 72 6f 6d | 20 43 4d 59 4b 20 6f 72 |ion from| CMYK or|
|000055f0| 20 59 43 62 43 72 20 74 | 6f 20 73 61 6d 65 20 6f | YCbCr t|o same o|
|00005600| 75 74 70 75 74 20 73 70 | 61 63 65 20 2a 2f 0a 58 |utput sp|ace */.X|
|00005610| 20 20 20 20 69 66 20 28 | 63 69 6e 66 6f 2d 3e 6f | if (|cinfo->o|
|00005620| 75 74 5f 63 6f 6c 6f 72 | 5f 73 70 61 63 65 20 3d |ut_color|_space =|
|00005630| 3d 20 63 69 6e 66 6f 2d | 3e 6a 70 65 67 5f 63 6f |= cinfo-|>jpeg_co|
|00005640| 6c 6f 72 5f 73 70 61 63 | 65 29 20 7b 0a 58 20 20 |lor_spac|e) {.X |
|00005650| 20 20 20 20 63 69 6e 66 | 6f 2d 3e 63 6f 6c 6f 72 | cinf|o->color|
|00005660| 5f 6f 75 74 5f 63 6f 6d | 70 73 20 3d 20 63 69 6e |_out_com|ps = cin|
|00005670| 66 6f 2d 3e 6e 75 6d 5f | 63 6f 6d 70 6f 6e 65 6e |fo->num_|componen|
|00005680| 74 73 3b 0a 58 20 20 20 | 20 20 20 63 69 6e 66 6f |ts;.X | cinfo|
|00005690| 2d 3e 6d 65 74 68 6f 64 | 73 2d 3e 63 6f 6c 6f 72 |->method|s->color|
|000056a0| 5f 63 6f 6e 76 65 72 74 | 20 3d 20 6e 75 6c 6c 5f |_convert| = null_|
|000056b0| 63 6f 6e 76 65 72 74 3b | 0a 58 20 20 20 20 20 20 |convert;|.X |
|000056c0| 63 69 6e 66 6f 2d 3e 6d | 65 74 68 6f 64 73 2d 3e |cinfo->m|ethods->|
|000056d0| 63 6f 6c 6f 72 6f 75 74 | 5f 69 6e 69 74 20 3d 20 |colorout|_init = |
|000056e0| 6e 75 6c 6c 5f 69 6e 69 | 74 3b 0a 58 20 20 20 20 |null_ini|t;.X |
|000056f0| 20 20 63 69 6e 66 6f 2d | 3e 6d 65 74 68 6f 64 73 | cinfo-|>methods|
|00005700| 2d 3e 63 6f 6c 6f 72 6f | 75 74 5f 74 65 72 6d 20 |->coloro|ut_term |
|00005710| 3d 20 6e 75 6c 6c 5f 74 | 65 72 6d 3b 0a 58 20 20 |= null_t|erm;.X |
|00005720| 20 20 7d 20 65 6c 73 65 | 09 09 09 2f 2a 20 75 6e | } else|.../* un|
|00005730| 73 75 70 70 6f 72 74 65 | 64 20 6e 6f 6e 2d 6e 75 |supporte|d non-nu|
|00005740| 6c 6c 20 63 6f 6e 76 65 | 72 73 69 6f 6e 20 2a 2f |ll conve|rsion */|
|00005750| 0a 58 20 20 20 20 20 20 | 45 52 52 45 58 49 54 28 |.X |ERREXIT(|
|00005760| 63 69 6e 66 6f 2d 3e 65 | 6d 65 74 68 6f 64 73 2c |cinfo->e|methods,|
|00005770| 20 22 55 6e 73 75 70 70 | 6f 72 74 65 64 20 63 6f | "Unsupp|orted co|
|00005780| 6c 6f 72 20 63 6f 6e 76 | 65 72 73 69 6f 6e 20 72 |lor conv|ersion r|
|00005790| 65 71 75 65 73 74 22 29 | 3b 0a 58 20 20 20 20 62 |equest")|;.X b|
|000057a0| 72 65 61 6b 3b 0a 58 20 | 20 7d 0a 58 0a 58 20 20 |reak;.X | }.X.X |
|000057b0| 69 66 20 28 63 69 6e 66 | 6f 2d 3e 71 75 61 6e 74 |if (cinf|o->quant|
|000057c0| 69 7a 65 5f 63 6f 6c 6f | 72 73 29 0a 58 20 20 20 |ize_colo|rs).X |
|000057d0| 20 63 69 6e 66 6f 2d 3e | 66 69 6e 61 6c 5f 6f 75 | cinfo->|final_ou|
|000057e0| 74 5f 63 6f 6d 70 73 20 | 3d 20 31 3b 09 2f 2a 20 |t_comps |= 1;./* |
|000057f0| 73 69 6e 67 6c 65 20 63 | 6f 6c 6f 72 6d 61 70 70 |single c|olormapp|
|00005800| 65 64 20 6f 75 74 70 75 | 74 20 63 6f 6d 70 6f 6e |ed outpu|t compon|
|00005810| 65 6e 74 20 2a 2f 0a 58 | 20 20 65 6c 73 65 0a 58 |ent */.X| else.X|
|00005820| 20 20 20 20 63 69 6e 66 | 6f 2d 3e 66 69 6e 61 6c | cinf|o->final|
|00005830| 5f 6f 75 74 5f 63 6f 6d | 70 73 20 3d 20 63 69 6e |_out_com|ps = cin|
|00005840| 66 6f 2d 3e 63 6f 6c 6f | 72 5f 6f 75 74 5f 63 6f |fo->colo|r_out_co|
|00005850| 6d 70 73 3b 0a 58 7d 0a | 45 4e 44 5f 4f 46 5f 46 |mps;.X}.|END_OF_F|
|00005860| 49 4c 45 0a 20 20 69 66 | 20 74 65 73 74 20 39 30 |ILE. if| test 90|
|00005870| 39 30 20 2d 6e 65 20 60 | 77 63 20 2d 63 20 3c 27 |90 -ne `|wc -c <'|
|00005880| 6a 64 63 6f 6c 6f 72 2e | 63 27 60 3b 20 74 68 65 |jdcolor.|c'`; the|
|00005890| 6e 0a 20 20 20 20 65 63 | 68 6f 20 73 68 61 72 3a |n. ec|ho shar:|
|000058a0| 20 5c 22 27 6a 64 63 6f | 6c 6f 72 2e 63 27 5c 22 | \"'jdco|lor.c'\"|
|000058b0| 20 75 6e 70 61 63 6b 65 | 64 20 77 69 74 68 20 77 | unpacke|d with w|
|000058c0| 72 6f 6e 67 20 73 69 7a | 65 21 0a 20 20 66 69 0a |rong siz|e!. fi.|
|000058d0| 20 20 23 20 65 6e 64 20 | 6f 66 20 27 6a 64 63 6f | # end |of 'jdco|
|000058e0| 6c 6f 72 2e 63 27 0a 66 | 69 0a 69 66 20 74 65 73 |lor.c'.f|i.if tes|
|000058f0| 74 20 2d 66 20 27 6a 6d | 65 6d 64 6f 73 61 2e 61 |t -f 'jm|emdosa.a|
|00005900| 73 6d 27 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |sm' -a "|${1}" !=|
|00005910| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00005920| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00005930| 6e 6f 74 20 63 6c 6f 62 | 62 65 72 20 65 78 69 73 |not clob|ber exis|
|00005940| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 27 6a 6d 65 |ting fil|e \"'jme|
|00005950| 6d 64 6f 73 61 2e 61 73 | 6d 27 5c 22 0a 65 6c 73 |mdosa.as|m'\".els|
|00005960| 65 0a 20 20 65 63 68 6f | 20 73 68 61 72 3a 20 45 |e. echo| shar: E|
|00005970| 78 74 72 61 63 74 69 6e | 67 20 5c 22 27 6a 6d 65 |xtractin|g \"'jme|
|00005980| 6d 64 6f 73 61 2e 61 73 | 6d 27 5c 22 20 5c 28 38 |mdosa.as|m'\" \(8|
|00005990| 33 31 34 20 63 68 61 72 | 61 63 74 65 72 73 5c 29 |314 char|acters\)|
|000059a0| 0a 20 20 73 65 64 20 22 | 73 2f 5e 58 2f 2f 22 20 |. sed "|s/^X//" |
|000059b0| 3e 27 6a 6d 65 6d 64 6f | 73 61 2e 61 73 6d 27 20 |>'jmemdo|sa.asm' |
|000059c0| 3c 3c 27 45 4e 44 5f 4f | 46 5f 46 49 4c 45 27 0a |<<'END_O|F_FILE'.|
|000059d0| 58 3b 0a 58 3b 20 6a 6d | 65 6d 64 6f 73 61 2e 61 |X;.X; jm|emdosa.a|
|000059e0| 73 6d 0a 58 3b 0a 58 3b | 20 43 6f 70 79 72 69 67 |sm.X;.X;| Copyrig|
|000059f0| 68 74 20 28 43 29 20 31 | 39 39 32 2c 20 54 68 6f |ht (C) 1|992, Tho|
|00005a00| 6d 61 73 20 47 2e 20 4c | 61 6e 65 2e 0a 58 3b 20 |mas G. L|ane..X; |
|00005a10| 54 68 69 73 20 66 69 6c | 65 20 69 73 20 70 61 72 |This fil|e is par|
|00005a20| 74 20 6f 66 20 74 68 65 | 20 49 6e 64 65 70 65 6e |t of the| Indepen|
|00005a30| 64 65 6e 74 20 4a 50 45 | 47 20 47 72 6f 75 70 27 |dent JPE|G Group'|
|00005a40| 73 20 73 6f 66 74 77 61 | 72 65 2e 0a 58 3b 20 46 |s softwa|re..X; F|
|00005a50| 6f 72 20 63 6f 6e 64 69 | 74 69 6f 6e 73 20 6f 66 |or condi|tions of|
|00005a60| 20 64 69 73 74 72 69 62 | 75 74 69 6f 6e 20 61 6e | distrib|ution an|
|00005a70| 64 20 75 73 65 2c 20 73 | 65 65 20 74 68 65 20 61 |d use, s|ee the a|
|00005a80| 63 63 6f 6d 70 61 6e 79 | 69 6e 67 20 52 45 41 44 |ccompany|ing READ|
|00005a90| 4d 45 20 66 69 6c 65 2e | 0a 58 3b 0a 58 3b 20 54 |ME file.|.X;.X; T|
|00005aa0| 68 69 73 20 66 69 6c 65 | 20 63 6f 6e 74 61 69 6e |his file| contain|
|00005ab0| 73 20 6c 6f 77 2d 6c 65 | 76 65 6c 20 69 6e 74 65 |s low-le|vel inte|
|00005ac0| 72 66 61 63 65 20 72 6f | 75 74 69 6e 65 73 20 74 |rface ro|utines t|
|00005ad0| 6f 20 73 75 70 70 6f 72 | 74 20 74 68 65 20 4d 53 |o suppor|t the MS|
|00005ae0| 2d 44 4f 53 0a 58 3b 20 | 62 61 63 6b 69 6e 67 20 |-DOS.X; |backing |
|00005af0| 73 74 6f 72 65 20 6d 61 | 6e 61 67 65 72 20 28 6a |store ma|nager (j|
|00005b00| 6d 65 6d 64 6f 73 2e 63 | 29 2e 20 20 52 6f 75 74 |memdos.c|). Rout|
|00005b10| 69 6e 65 73 20 61 72 65 | 20 70 72 6f 76 69 64 65 |ines are| provide|
|00005b20| 64 20 74 6f 20 61 63 63 | 65 73 73 20 64 69 73 6b |d to acc|ess disk|
|00005b30| 0a 58 3b 20 66 69 6c 65 | 73 20 74 68 72 6f 75 67 |.X; file|s throug|
|00005b40| 68 20 64 69 72 65 63 74 | 20 44 4f 53 20 63 61 6c |h direct| DOS cal|
|00005b50| 6c 73 2c 20 61 6e 64 20 | 74 6f 20 61 63 63 65 73 |ls, and |to acces|
|00005b60| 73 20 58 4d 53 20 61 6e | 64 20 45 4d 53 20 64 72 |s XMS an|d EMS dr|
|00005b70| 69 76 65 72 73 2e 0a 58 | 3b 0a 58 3b 20 54 68 69 |ivers..X|;.X; Thi|
|00005b80| 73 20 66 69 6c 65 20 73 | 68 6f 75 6c 64 20 61 73 |s file s|hould as|
|00005b90| 73 65 6d 62 6c 65 20 77 | 69 74 68 20 4d 69 63 72 |semble w|ith Micr|
|00005ba0| 6f 73 6f 66 74 27 73 20 | 4d 41 53 4d 20 6f 72 20 |osoft's |MASM or |
|00005bb0| 61 6e 79 20 63 6f 6d 70 | 61 74 69 62 6c 65 0a 58 |any comp|atible.X|
|00005bc0| 3b 20 61 73 73 65 6d 62 | 6c 65 72 20 28 69 6e 63 |; assemb|ler (inc|
|00005bd0| 6c 75 64 69 6e 67 20 42 | 6f 72 6c 61 6e 64 27 73 |luding B|orland's|
|00005be0| 20 54 75 72 62 6f 20 41 | 73 73 65 6d 62 6c 65 72 | Turbo A|ssembler|
|00005bf0| 29 2e 20 20 49 66 20 79 | 6f 75 20 68 61 76 65 6e |). If y|ou haven|
|00005c00| 27 74 20 67 6f 74 0a 58 | 3b 20 61 20 63 6f 6d 70 |'t got.X|; a comp|
|00005c10| 61 74 69 62 6c 65 20 61 | 73 73 65 6d 62 6c 65 72 |atible a|ssembler|
|00005c20| 2c 20 62 65 74 74 65 72 | 20 66 61 6c 6c 20 62 61 |, better| fall ba|
|00005c30| 63 6b 20 74 6f 20 6a 6d | 65 6d 61 6e 73 69 2e 63 |ck to jm|emansi.c|
|00005c40| 20 6f 72 20 6a 6d 65 6d | 6e 61 6d 65 2e 63 2e 0a | or jmem|name.c..|
|00005c50| 58 3b 0a 58 3b 20 54 6f | 20 6d 69 6e 69 6d 69 7a |X;.X; To| minimiz|
|00005c60| 65 20 64 65 70 65 6e 64 | 65 6e 63 65 20 6f 6e 20 |e depend|ence on |
|00005c70| 74 68 65 20 43 20 63 6f | 6d 70 69 6c 65 72 27 73 |the C co|mpiler's|
|00005c80| 20 72 65 67 69 73 74 65 | 72 20 75 73 61 67 65 20 | registe|r usage |
|00005c90| 63 6f 6e 76 65 6e 74 69 | 6f 6e 73 2c 0a 58 3b 20 |conventi|ons,.X; |
|00005ca0| 77 65 20 73 61 76 65 20 | 61 6e 64 20 72 65 73 74 |we save |and rest|
|00005cb0| 6f 72 65 20 61 6c 6c 20 | 38 30 38 36 20 72 65 67 |ore all |8086 reg|
|00005cc0| 69 73 74 65 72 73 2c 20 | 65 76 65 6e 20 74 68 6f |isters, |even tho|
|00005cd0| 75 67 68 20 6d 6f 73 74 | 20 63 6f 6d 70 69 6c 65 |ugh most| compile|
|00005ce0| 72 73 20 6f 6e 6c 79 0a | 58 3b 20 72 65 71 75 69 |rs only.|X; requi|
|00005cf0| 72 65 20 53 49 2c 44 49 | 2c 44 53 20 74 6f 20 62 |re SI,DI|,DS to b|
|00005d00| 65 20 70 72 65 73 65 72 | 76 65 64 2e 20 20 41 6c |e preser|ved. Al|
|00005d10| 73 6f 2c 20 77 65 20 75 | 73 65 20 6f 6e 6c 79 20 |so, we u|se only |
|00005d20| 31 36 2d 62 69 74 2d 77 | 69 64 65 20 72 65 74 75 |16-bit-w|ide retu|
|00005d30| 72 6e 0a 58 3b 20 76 61 | 6c 75 65 73 2c 20 77 68 |rn.X; va|lues, wh|
|00005d40| 69 63 68 20 65 76 65 72 | 79 62 6f 64 79 20 72 65 |ich ever|ybody re|
|00005d50| 74 75 72 6e 73 20 69 6e | 20 41 58 2e 0a 58 3b 0a |turns in| AX..X;.|
|00005d60| 58 3b 20 42 61 73 65 64 | 20 6f 6e 20 63 6f 64 65 |X; Based| on code|
|00005d70| 20 63 6f 6e 74 72 69 62 | 75 74 65 64 20 62 79 20 | contrib|uted by |
|00005d80| 47 65 27 20 57 65 69 6a | 65 72 73 2e 0a 58 3b 0a |Ge' Weij|ers..X;.|
|00005d90| 58 0a 58 4a 4d 45 4d 44 | 4f 53 41 5f 54 58 54 09 |X.XJMEMD|OSA_TXT.|
|00005da0| 73 65 67 6d 65 6e 74 20 | 62 79 74 65 20 70 75 62 |segment |byte pub|
|00005db0| 6c 69 63 20 27 43 4f 44 | 45 27 0a 58 0a 58 09 09 |lic 'COD|E'.X.X..|
|00005dc0| 61 73 73 75 6d 65 09 63 | 73 3a 4a 4d 45 4d 44 4f |assume.c|s:JMEMDO|
|00005dd0| 53 41 5f 54 58 54 0a 58 | 0a 58 09 09 70 75 62 6c |SA_TXT.X|.X..publ|
|00005de0| 69 63 09 5f 6a 64 6f 73 | 5f 6f 70 65 6e 0a 58 09 |ic._jdos|_open.X.|
|00005df0| 09 70 75 62 6c 69 63 09 | 5f 6a 64 6f 73 5f 63 6c |.public.|_jdos_cl|
|00005e00| 6f 73 65 0a 58 09 09 70 | 75 62 6c 69 63 09 5f 6a |ose.X..p|ublic._j|
|00005e10| 64 6f 73 5f 73 65 65 6b | 0a 58 09 09 70 75 62 6c |dos_seek|.X..publ|
|00005e20| 69 63 09 5f 6a 64 6f 73 | 5f 72 65 61 64 0a 58 09 |ic._jdos|_read.X.|
|00005e30| 09 70 75 62 6c 69 63 09 | 5f 6a 64 6f 73 5f 77 72 |.public.|_jdos_wr|
|00005e40| 69 74 65 0a 58 09 09 70 | 75 62 6c 69 63 09 5f 6a |ite.X..p|ublic._j|
|00005e50| 78 6d 73 5f 67 65 74 64 | 72 69 76 65 72 0a 58 09 |xms_getd|river.X.|
|00005e60| 09 70 75 62 6c 69 63 09 | 5f 6a 78 6d 73 5f 63 61 |.public.|_jxms_ca|
|00005e70| 6c 6c 64 72 69 76 65 72 | 0a 58 09 09 70 75 62 6c |lldriver|.X..publ|
|00005e80| 69 63 09 5f 6a 65 6d 73 | 5f 61 76 61 69 6c 61 62 |ic._jems|_availab|
|00005e90| 6c 65 0a 58 09 09 70 75 | 62 6c 69 63 09 5f 6a 65 |le.X..pu|blic._je|
|00005ea0| 6d 73 5f 63 61 6c 6c 64 | 72 69 76 65 72 0a 58 0a |ms_calld|river.X.|
|00005eb0| 58 3b 0a 58 3b 20 73 68 | 6f 72 74 20 66 61 72 20 |X;.X; sh|ort far |
|00005ec0| 6a 64 6f 73 5f 6f 70 65 | 6e 20 28 73 68 6f 72 74 |jdos_ope|n (short|
|00005ed0| 20 66 61 72 20 2a 20 68 | 61 6e 64 6c 65 2c 20 63 | far * h|andle, c|
|00005ee0| 68 61 72 20 66 61 72 20 | 2a 20 66 69 6c 65 6e 61 |har far |* filena|
|00005ef0| 6d 65 29 0a 58 3b 0a 58 | 3b 20 43 72 65 61 74 65 |me).X;.X|; Create|
|00005f00| 20 61 6e 64 20 6f 70 65 | 6e 20 61 20 74 65 6d 70 | and ope|n a temp|
|00005f10| 6f 72 61 72 79 20 66 69 | 6c 65 0a 58 3b 0a 58 5f |orary fi|le.X;.X_|
|00005f20| 6a 64 6f 73 5f 6f 70 65 | 6e 09 70 72 6f 63 09 66 |jdos_ope|n.proc.f|
|00005f30| 61 72 0a 58 09 09 70 75 | 73 68 09 62 70 09 09 09 |ar.X..pu|sh.bp...|
|00005f40| 3b 20 6c 69 6e 6b 61 67 | 65 0a 58 09 09 6d 6f 76 |; linkag|e.X..mov|
|00005f50| 20 09 62 70 2c 73 70 0a | 58 09 09 70 75 73 68 09 | .bp,sp.|X..push.|
|00005f60| 73 69 09 09 09 3b 20 73 | 61 76 65 20 61 6c 6c 20 |si...; s|ave all |
|00005f70| 72 65 67 69 73 74 65 72 | 73 20 66 6f 72 20 73 61 |register|s for sa|
|00005f80| 66 65 74 79 0a 58 09 09 | 70 75 73 68 09 64 69 0a |fety.X..|push.di.|
|00005f90| 58 09 09 70 75 73 68 09 | 62 78 0a 58 09 09 70 75 |X..push.|bx.X..pu|
|00005fa0| 73 68 09 63 78 0a 58 09 | 09 70 75 73 68 09 64 78 |sh.cx.X.|.push.dx|
|00005fb0| 0a 58 09 09 70 75 73 68 | 09 65 73 0a 58 09 09 70 |.X..push|.es.X..p|
|00005fc0| 75 73 68 09 64 73 0a 58 | 09 09 6d 6f 76 09 63 78 |ush.ds.X|..mov.cx|
|00005fd0| 2c 30 09 09 09 3b 20 6e | 6f 72 6d 61 6c 20 66 69 |,0...; n|ormal fi|
|00005fe0| 6c 65 20 61 74 74 72 69 | 62 75 74 65 73 0a 58 09 |le attri|butes.X.|
|00005ff0| 09 6c 64 73 09 64 78 2c | 64 77 6f 72 64 20 70 74 |.lds.dx,|dword pt|
|00006000| 72 20 5b 62 70 2b 31 30 | 5d 09 3b 20 67 65 74 20 |r [bp+10|].; get |
|00006010| 66 69 6c 65 6e 61 6d 65 | 20 70 6f 69 6e 74 65 72 |filename| pointer|
|00006020| 0a 58 09 09 6d 6f 76 09 | 61 68 2c 33 63 68 09 09 |.X..mov.|ah,3ch..|
|00006030| 09 3b 20 63 72 65 61 74 | 65 20 66 69 6c 65 0a 58 |.; creat|e file.X|
|00006040| 09 09 69 6e 74 09 32 31 | 68 0a 58 09 09 6a 63 09 |..int.21|h.X..jc.|
|00006050| 6f 70 65 6e 5f 65 72 72 | 09 09 3b 20 69 66 20 66 |open_err|..; if f|
|00006060| 61 69 6c 65 64 2c 20 72 | 65 74 75 72 6e 20 65 72 |ailed, r|eturn er|
|00006070| 72 6f 72 20 63 6f 64 65 | 0a 58 09 09 6c 64 73 09 |ror code|.X..lds.|
|00006080| 62 78 2c 64 77 6f 72 64 | 20 70 74 72 20 5b 62 70 |bx,dword| ptr [bp|
|00006090| 2b 36 5d 09 3b 20 67 65 | 74 20 68 61 6e 64 6c 65 |+6].; ge|t handle|
|000060a0| 20 70 6f 69 6e 74 65 72 | 0a 58 09 09 6d 6f 76 09 | pointer|.X..mov.|
|000060b0| 77 6f 72 64 20 70 74 72 | 20 5b 62 78 5d 2c 61 78 |word ptr| [bx],ax|
|000060c0| 09 3b 20 73 61 76 65 20 | 74 68 65 20 68 61 6e 64 |.; save |the hand|
|000060d0| 6c 65 0a 58 09 09 78 6f | 72 09 61 78 2c 61 78 09 |le.X..xo|r.ax,ax.|
|000060e0| 09 09 3b 20 72 65 74 75 | 72 6e 20 7a 65 72 6f 20 |..; retu|rn zero |
|000060f0| 66 6f 72 20 4f 4b 0a 58 | 6f 70 65 6e 5f 65 72 72 |for OK.X|open_err|
|00006100| 3a 09 70 6f 70 09 64 73 | 09 09 09 3b 20 72 65 73 |:.pop.ds|...; res|
|00006110| 74 6f 72 65 20 72 65 67 | 69 73 74 65 72 73 20 61 |tore reg|isters a|
|00006120| 6e 64 20 65 78 69 74 0a | 58 09 09 70 6f 70 09 65 |nd exit.|X..pop.e|
|00006130| 73 0a 58 09 09 70 6f 70 | 09 64 78 0a 58 09 09 70 |s.X..pop|.dx.X..p|
|00006140| 6f 70 09 63 78 0a 58 09 | 09 70 6f 70 09 62 78 0a |op.cx.X.|.pop.bx.|
|00006150| 58 09 09 70 6f 70 09 64 | 69 0a 58 09 09 70 6f 70 |X..pop.d|i.X..pop|
|00006160| 09 73 69 0a 58 09 09 70 | 6f 70 20 09 62 70 0a 58 |.si.X..p|op .bp.X|
|00006170| 09 09 72 65 74 0a 58 5f | 6a 64 6f 73 5f 6f 70 65 |..ret.X_|jdos_ope|
|00006180| 6e 09 65 6e 64 70 0a 58 | 0a 58 0a 58 3b 0a 58 3b |n.endp.X|.X.X;.X;|
|00006190| 20 73 68 6f 72 74 20 66 | 61 72 20 6a 64 6f 73 5f | short f|ar jdos_|
|000061a0| 63 6c 6f 73 65 20 28 73 | 68 6f 72 74 20 68 61 6e |close (s|hort han|
|000061b0| 64 6c 65 29 0a 58 3b 0a | 58 3b 20 43 6c 6f 73 65 |dle).X;.|X; Close|
|000061c0| 20 74 68 65 20 66 69 6c | 65 20 68 61 6e 64 6c 65 | the fil|e handle|
|000061d0| 0a 58 3b 0a 58 5f 6a 64 | 6f 73 5f 63 6c 6f 73 65 |.X;.X_jd|os_close|
|000061e0| 09 70 72 6f 63 09 66 61 | 72 0a 58 09 09 70 75 73 |.proc.fa|r.X..pus|
|000061f0| 68 09 62 70 09 09 09 3b | 20 6c 69 6e 6b 61 67 65 |h.bp...;| linkage|
|00006200| 0a 58 09 09 6d 6f 76 20 | 09 62 70 2c 73 70 0a 58 |.X..mov |.bp,sp.X|
|00006210| 09 09 70 75 73 68 09 73 | 69 09 09 09 3b 20 73 61 |..push.s|i...; sa|
|00006220| 76 65 20 61 6c 6c 20 72 | 65 67 69 73 74 65 72 73 |ve all r|egisters|
|00006230| 20 66 6f 72 20 73 61 66 | 65 74 79 0a 58 09 09 70 | for saf|ety.X..p|
|00006240| 75 73 68 09 64 69 0a 58 | 09 09 70 75 73 68 09 62 |ush.di.X|..push.b|
|00006250| 78 0a 58 09 09 70 75 73 | 68 09 63 78 0a 58 09 09 |x.X..pus|h.cx.X..|
|00006260| 70 75 73 68 09 64 78 0a | 58 09 09 70 75 73 68 09 |push.dx.|X..push.|
|00006270| 65 73 0a 58 09 09 70 75 | 73 68 09 64 73 0a 58 09 |es.X..pu|sh.ds.X.|
|00006280| 09 6d 6f 76 09 62 78 2c | 77 6f 72 64 20 70 74 72 |.mov.bx,|word ptr|
|00006290| 20 5b 62 70 2b 36 5d 09 | 3b 20 66 69 6c 65 20 68 | [bp+6].|; file h|
|000062a0| 61 6e 64 6c 65 0a 58 09 | 09 6d 6f 76 09 61 68 2c |andle.X.|.mov.ah,|
|000062b0| 33 65 68 09 09 09 3b 20 | 63 6c 6f 73 65 20 66 69 |3eh...; |close fi|
|000062c0| 6c 65 0a 58 09 09 69 6e | 74 09 32 31 68 0a 58 09 |le.X..in|t.21h.X.|
|000062d0| 09 6a 63 09 63 6c 6f 73 | 65 5f 65 72 72 09 09 3b |.jc.clos|e_err..;|
|000062e0| 20 69 66 20 66 61 69 6c | 65 64 2c 20 72 65 74 75 | if fail|ed, retu|
|000062f0| 72 6e 20 65 72 72 6f 72 | 20 63 6f 64 65 0a 58 09 |rn error| code.X.|
|00006300| 09 78 6f 72 09 61 78 2c | 61 78 09 09 09 3b 20 72 |.xor.ax,|ax...; r|
|00006310| 65 74 75 72 6e 20 7a 65 | 72 6f 20 66 6f 72 20 4f |eturn ze|ro for O|
|00006320| 4b 0a 58 63 6c 6f 73 65 | 5f 65 72 72 3a 09 70 6f |K.Xclose|_err:.po|
|00006330| 70 09 64 73 09 09 09 3b | 20 72 65 73 74 6f 72 65 |p.ds...;| restore|
|00006340| 20 72 65 67 69 73 74 65 | 72 73 20 61 6e 64 20 65 | registe|rs and e|
|00006350| 78 69 74 0a 58 09 09 70 | 6f 70 09 65 73 0a 58 09 |xit.X..p|op.es.X.|
|00006360| 09 70 6f 70 09 64 78 0a | 58 09 09 70 6f 70 09 63 |.pop.dx.|X..pop.c|
|00006370| 78 0a 58 09 09 70 6f 70 | 09 62 78 0a 58 09 09 70 |x.X..pop|.bx.X..p|
|00006380| 6f 70 09 64 69 0a 58 09 | 09 70 6f 70 09 73 69 0a |op.di.X.|.pop.si.|
|00006390| 58 09 09 70 6f 70 20 09 | 62 70 0a 58 09 09 72 65 |X..pop .|bp.X..re|
|000063a0| 74 0a 58 5f 6a 64 6f 73 | 5f 63 6c 6f 73 65 09 65 |t.X_jdos|_close.e|
|000063b0| 6e 64 70 0a 58 0a 58 0a | 58 3b 0a 58 3b 20 73 68 |ndp.X.X.|X;.X; sh|
|000063c0| 6f 72 74 20 66 61 72 20 | 6a 64 6f 73 5f 73 65 65 |ort far |jdos_see|
|000063d0| 6b 20 28 73 68 6f 72 74 | 20 68 61 6e 64 6c 65 2c |k (short| handle,|
|000063e0| 20 6c 6f 6e 67 20 6f 66 | 66 73 65 74 29 0a 58 3b | long of|fset).X;|
|000063f0| 0a 58 3b 20 53 65 74 20 | 66 69 6c 65 20 70 6f 73 |.X; Set |file pos|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.