home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / sources / misc / 4204 < prev    next >
SHell self-extracting ARchive  |  1992-12-17  |  57.9 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file ASCII text default
100% checkBytes Printable ASCII 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 50 61 |.sources|.misc.Pa|
|00000020| 74 68 3a 20 73 70 61 72 | 6b 79 21 6b 65 6e 74 0a |th: spar|ky!kent.|
|00000030| 46 72 6f 6d 3a 20 6a 70 | 65 67 2d 69 6e 66 6f 40 |From: jp|eg-info@|
|00000040| 75 75 6e 65 74 2e 75 75 | 2e 6e 65 74 20 28 49 6e |uunet.uu|.net (In|
|00000050| 64 65 70 65 6e 64 65 6e | 74 20 4a 50 45 47 20 47 |dependen|t JPEG G|
|00000060| 72 6f 75 70 29 0a 53 75 | 62 6a 65 63 74 3a 20 20 |roup).Su|bject: |
|00000070| 76 33 34 69 30 36 34 3a | 20 20 6a 70 65 67 20 2d |v34i064:| jpeg -|
|00000080| 20 4a 50 45 47 20 69 6d | 61 67 65 20 63 6f 6d 70 | JPEG im|age comp|
|00000090| 72 65 73 73 69 6f 6e 2c | 20 50 61 72 74 31 30 2f |ression,| Part10/|
|000000a0| 31 38 0a 4d 65 73 73 61 | 67 65 2d 49 44 3a 20 3c |18.Messa|ge-ID: <|
|000000b0| 31 39 39 32 44 65 63 31 | 37 2e 31 36 34 36 30 33 |1992Dec1|7.164603|
|000000c0| 2e 35 37 39 33 40 73 70 | 61 72 6b 79 2e 69 6d 64 |.5793@sp|arky.imd|
|000000d0| 2e 73 74 65 72 6c 69 6e | 67 2e 63 6f 6d 3e 0a 46 |.sterlin|g.com>.F|
|000000e0| 6f 6c 6c 6f 77 75 70 2d | 54 6f 3a 20 63 6f 6d 70 |ollowup-|To: comp|
|000000f0| 2e 73 6f 75 72 63 65 73 | 2e 64 0a 58 2d 4d 64 34 |.sources|.d.X-Md4|
|00000100| 2d 53 69 67 6e 61 74 75 | 72 65 3a 20 31 35 65 61 |-Signatu|re: 15ea|
|00000110| 65 30 32 36 32 37 61 33 | 62 38 61 64 61 36 37 39 |e02627a3|b8ada679|
|00000120| 63 66 65 31 62 39 36 30 | 66 37 39 61 0a 4b 65 79 |cfe1b960|f79a.Key|
|00000130| 77 6f 72 64 73 3a 20 4a | 50 45 47 2c 20 69 6d 61 |words: J|PEG, ima|
|00000140| 67 65 20 63 6f 6d 70 72 | 65 73 73 69 6f 6e 0a 53 |ge compr|ession.S|
|00000150| 65 6e 64 65 72 3a 20 6b | 65 6e 74 40 73 70 61 72 |ender: k|ent@spar|
|00000160| 6b 79 2e 69 6d 64 2e 73 | 74 65 72 6c 69 6e 67 2e |ky.imd.s|terling.|
|00000170| 63 6f 6d 20 28 4b 65 6e | 74 20 4c 61 6e 64 66 69 |com (Ken|t Landfi|
|00000180| 65 6c 64 29 0a 4f 72 67 | 61 6e 69 7a 61 74 69 6f |eld).Org|anizatio|
|00000190| 6e 3a 20 49 6e 64 65 70 | 65 6e 64 65 6e 74 20 4a |n: Indep|endent J|
|000001a0| 50 45 47 20 47 72 6f 75 | 70 0a 52 65 66 65 72 65 |PEG Grou|p.Refere|
|000001b0| 6e 63 65 73 3a 20 3c 63 | 73 6d 2d 76 33 34 69 30 |nces: <c|sm-v34i0|
|000001c0| 35 35 3d 6a 70 65 67 2e | 32 32 30 34 32 34 40 73 |55=jpeg.|220424@s|
|000001d0| 70 61 72 6b 79 2e 49 4d | 44 2e 53 74 65 72 6c 69 |parky.IM|D.Sterli|
|000001e0| 6e 67 2e 43 4f 4d 3e 0a | 44 61 74 65 3a 20 54 68 |ng.COM>.|Date: Th|
|000001f0| 75 2c 20 31 37 20 44 65 | 63 20 31 39 39 32 20 31 |u, 17 De|c 1992 1|
|00000200| 36 3a 34 36 3a 30 33 20 | 47 4d 54 0a 41 70 70 72 |6:46:03 |GMT.Appr|
|00000210| 6f 76 65 64 3a 20 6b 65 | 6e 74 40 73 70 61 72 6b |oved: ke|nt@spark|
|00000220| 79 2e 69 6d 64 2e 73 74 | 65 72 6c 69 6e 67 2e 63 |y.imd.st|erling.c|
|00000230| 6f 6d 0a 4c 69 6e 65 73 | 3a 20 31 35 35 36 0a 0a |om.Lines|: 1556..|
|00000240| 53 75 62 6d 69 74 74 65 | 64 2d 62 79 3a 20 6a 70 |Submitte|d-by: jp|
|00000250| 65 67 2d 69 6e 66 6f 40 | 75 75 6e 65 74 2e 75 75 |eg-info@|uunet.uu|
|00000260| 2e 6e 65 74 20 28 49 6e | 64 65 70 65 6e 64 65 6e |.net (In|dependen|
|00000270| 74 20 4a 50 45 47 20 47 | 72 6f 75 70 29 0a 50 6f |t JPEG G|roup).Po|
|00000280| 73 74 69 6e 67 2d 6e 75 | 6d 62 65 72 3a 20 56 6f |sting-nu|mber: Vo|
|00000290| 6c 75 6d 65 20 33 34 2c | 20 49 73 73 75 65 20 36 |lume 34,| Issue 6|
|000002a0| 34 0a 41 72 63 68 69 76 | 65 2d 6e 61 6d 65 3a 20 |4.Archiv|e-name: |
|000002b0| 6a 70 65 67 2f 70 61 72 | 74 31 30 0a 45 6e 76 69 |jpeg/par|t10.Envi|
|000002c0| 72 6f 6e 6d 65 6e 74 3a | 20 55 4e 49 58 2c 20 56 |ronment:| UNIX, V|
|000002d0| 4d 53 2c 20 4d 53 2d 44 | 4f 53 2c 20 4d 61 63 2c |MS, MS-D|OS, Mac,|
|000002e0| 20 41 6d 69 67 61 2c 20 | 41 74 61 72 69 2c 20 43 | Amiga, |Atari, C|
|000002f0| 72 61 79 0a 53 75 70 65 | 72 73 65 64 65 73 3a 20 |ray.Supe|rsedes: |
|00000300| 6a 70 65 67 3a 20 56 6f | 6c 75 6d 65 20 32 39 2c |jpeg: Vo|lume 29,|
|00000310| 20 49 73 73 75 65 20 31 | 2d 31 38 0a 0a 23 21 20 | Issue 1|-18..#! |
|00000320| 2f 62 69 6e 2f 73 68 0a | 23 20 54 68 69 73 20 69 |/bin/sh.|# This i|
|00000330| 73 20 61 20 73 68 65 6c | 6c 20 61 72 63 68 69 76 |s a shel|l archiv|
|00000340| 65 2e 20 20 52 65 6d 6f | 76 65 20 61 6e 79 74 68 |e. Remo|ve anyth|
|00000350| 69 6e 67 20 62 65 66 6f | 72 65 20 74 68 69 73 20 |ing befo|re this |
|00000360| 6c 69 6e 65 2c 20 74 68 | 65 6e 20 66 65 65 64 20 |line, th|en feed |
|00000370| 69 74 0a 23 20 69 6e 74 | 6f 20 61 20 73 68 65 6c |it.# int|o a shel|
|00000380| 6c 20 76 69 61 20 22 73 | 68 20 66 69 6c 65 22 20 |l via "s|h file" |
|00000390| 6f 72 20 73 69 6d 69 6c | 61 72 2e 20 20 54 6f 20 |or simil|ar. To |
|000003a0| 6f 76 65 72 77 72 69 74 | 65 20 65 78 69 73 74 69 |overwrit|e existi|
|000003b0| 6e 67 20 66 69 6c 65 73 | 2c 0a 23 20 74 79 70 65 |ng files|,.# type|
|000003c0| 20 22 73 68 20 66 69 6c | 65 20 2d 63 22 2e 0a 23 | "sh fil|e -c"..#|
|000003d0| 20 43 6f 6e 74 65 6e 74 | 73 3a 20 20 6a 64 73 61 | Content|s: jdsa|
|000003e0| 6d 70 6c 65 2e 63 20 6a | 72 64 6a 66 69 66 2e 63 |mple.c j|rdjfif.c|
|000003f0| 20 74 65 73 74 69 6d 67 | 2e 67 69 66 2e 55 0a 23 | testimg|.gif.U.#|
|00000400| 20 57 72 61 70 70 65 64 | 20 62 79 20 6b 65 6e 74 | Wrapped| by kent|
|00000410| 40 73 70 61 72 6b 79 20 | 6f 6e 20 57 65 64 20 44 |@sparky |on Wed D|
|00000420| 65 63 20 31 36 20 32 30 | 3a 35 32 3a 32 38 20 31 |ec 16 20|:52:28 1|
|00000430| 39 39 32 0a 50 41 54 48 | 3d 2f 62 69 6e 3a 2f 75 |992.PATH|=/bin:/u|
|00000440| 73 72 2f 62 69 6e 3a 2f | 75 73 72 2f 75 63 62 3a |sr/bin:/|usr/ucb:|
|00000450| 2f 75 73 72 2f 6c 6f 63 | 61 6c 2f 62 69 6e 3a 2f |/usr/loc|al/bin:/|
|00000460| 75 73 72 2f 6c 62 69 6e | 20 3b 20 65 78 70 6f 72 |usr/lbin| ; expor|
|00000470| 74 20 50 41 54 48 0a 65 | 63 68 6f 20 49 66 20 74 |t PATH.e|cho If t|
|00000480| 68 69 73 20 61 72 63 68 | 69 76 65 20 69 73 20 63 |his arch|ive is c|
|00000490| 6f 6d 70 6c 65 74 65 2c | 20 79 6f 75 20 77 69 6c |omplete,| you wil|
|000004a0| 6c 20 73 65 65 20 74 68 | 65 20 66 6f 6c 6c 6f 77 |l see th|e follow|
|000004b0| 69 6e 67 20 6d 65 73 73 | 61 67 65 3a 0a 65 63 68 |ing mess|age:.ech|
|000004c0| 6f 20 27 20 20 20 20 20 | 20 20 20 20 20 22 73 68 |o ' | "sh|
|000004d0| 61 72 3a 20 45 6e 64 20 | 6f 66 20 61 72 63 68 69 |ar: End |of archi|
|000004e0| 76 65 20 31 30 20 28 6f | 66 20 31 38 29 2e 22 27 |ve 10 (o|f 18)."'|
|000004f0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 6a 64 73 |.if test| -f 'jds|
|00000500| 61 6d 70 6c 65 2e 63 27 | 20 2d 61 20 22 24 7b 31 |ample.c'| -a "${1|
|00000510| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00000520| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00000530| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|00000540| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|00000550| 22 27 6a 64 73 61 6d 70 | 6c 65 2e 63 27 5c 22 0a |"'jdsamp|le.c'\".|
|00000560| 65 6c 73 65 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |else. e|cho shar|
|00000570| 3a 20 45 78 74 72 61 63 | 74 69 6e 67 20 5c 22 27 |: Extrac|ting \"'|
|00000580| 6a 64 73 61 6d 70 6c 65 | 2e 63 27 5c 22 20 5c 28 |jdsample|.c'\" \(|
|00000590| 39 36 36 35 20 63 68 61 | 72 61 63 74 65 72 73 5c |9665 cha|racters\|
|000005a0| 29 0a 20 20 73 65 64 20 | 22 73 2f 5e 58 2f 2f 22 |). sed |"s/^X//"|
|000005b0| 20 3e 27 6a 64 73 61 6d | 70 6c 65 2e 63 27 20 3c | >'jdsam|ple.c' <|
|000005c0| 3c 27 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 27 0a 58 |<'END_OF|_FILE'.X|
|000005d0| 2f 2a 0a 58 20 2a 20 6a | 64 73 61 6d 70 6c 65 2e |/*.X * j|dsample.|
|000005e0| 63 0a 58 20 2a 0a 58 20 | 2a 20 43 6f 70 79 72 69 |c.X *.X |* Copyri|
|000005f0| 67 68 74 20 28 43 29 20 | 31 39 39 31 2c 20 31 39 |ght (C) |1991, 19|
|00000600| 39 32 2c 20 54 68 6f 6d | 61 73 20 47 2e 20 4c 61 |92, Thom|as G. La|
|00000610| 6e 65 2e 0a 58 20 2a 20 | 54 68 69 73 20 66 69 6c |ne..X * |This fil|
|00000620| 65 20 69 73 20 70 61 72 | 74 20 6f 66 20 74 68 65 |e is par|t of the|
|00000630| 20 49 6e 64 65 70 65 6e | 64 65 6e 74 20 4a 50 45 | Indepen|dent JPE|
|00000640| 47 20 47 72 6f 75 70 27 | 73 20 73 6f 66 74 77 61 |G Group'|s softwa|
|00000650| 72 65 2e 0a 58 20 2a 20 | 46 6f 72 20 63 6f 6e 64 |re..X * |For cond|
|00000660| 69 74 69 6f 6e 73 20 6f | 66 20 64 69 73 74 72 69 |itions o|f distri|
|00000670| 62 75 74 69 6f 6e 20 61 | 6e 64 20 75 73 65 2c 20 |bution a|nd use, |
|00000680| 73 65 65 20 74 68 65 20 | 61 63 63 6f 6d 70 61 6e |see the |accompan|
|00000690| 79 69 6e 67 20 52 45 41 | 44 4d 45 20 66 69 6c 65 |ying REA|DME file|
|000006a0| 2e 0a 58 20 2a 0a 58 20 | 2a 20 54 68 69 73 20 66 |..X *.X |* This f|
|000006b0| 69 6c 65 20 63 6f 6e 74 | 61 69 6e 73 20 75 70 73 |ile cont|ains ups|
|000006c0| 61 6d 70 6c 69 6e 67 20 | 72 6f 75 74 69 6e 65 73 |ampling |routines|
|000006d0| 2e 0a 58 20 2a 20 54 68 | 65 73 65 20 72 6f 75 74 |..X * Th|ese rout|
|000006e0| 69 6e 65 73 20 61 72 65 | 20 69 6e 76 6f 6b 65 64 |ines are| invoked|
|000006f0| 20 76 69 61 20 74 68 65 | 20 75 70 73 61 6d 70 6c | via the| upsampl|
|00000700| 65 20 61 6e 64 0a 58 20 | 2a 20 75 70 73 61 6d 70 |e and.X |* upsamp|
|00000710| 6c 65 5f 69 6e 69 74 2f | 74 65 72 6d 20 6d 65 74 |le_init/|term met|
|00000720| 68 6f 64 73 2e 0a 58 20 | 2a 0a 58 20 2a 20 41 6e |hods..X |*.X * An|
|00000730| 20 65 78 63 65 6c 6c 65 | 6e 74 20 72 65 66 65 72 | excelle|nt refer|
|00000740| 65 6e 63 65 20 66 6f 72 | 20 69 6d 61 67 65 20 72 |ence for| image r|
|00000750| 65 73 61 6d 70 6c 69 6e | 67 20 69 73 0a 58 20 2a |esamplin|g is.X *|
|00000760| 20 20 20 44 69 67 69 74 | 61 6c 20 49 6d 61 67 65 | Digit|al Image|
|00000770| 20 57 61 72 70 69 6e 67 | 2c 20 47 65 6f 72 67 65 | Warping|, George|
|00000780| 20 57 6f 6c 62 65 72 67 | 2c 20 31 39 39 30 2e 0a | Wolberg|, 1990..|
|00000790| 58 20 2a 20 20 20 50 75 | 62 2e 20 62 79 20 49 45 |X * Pu|b. by IE|
|000007a0| 45 45 20 43 6f 6d 70 75 | 74 65 72 20 53 6f 63 69 |EE Compu|ter Soci|
|000007b0| 65 74 79 20 50 72 65 73 | 73 2c 20 4c 6f 73 20 41 |ety Pres|s, Los A|
|000007c0| 6c 61 6d 69 74 6f 73 2c | 20 43 41 2e 20 49 53 42 |lamitos,| CA. ISB|
|000007d0| 4e 20 30 2d 38 31 38 36 | 2d 38 39 34 34 2d 37 2e |N 0-8186|-8944-7.|
|000007e0| 0a 58 20 2a 2f 0a 58 0a | 58 23 69 6e 63 6c 75 64 |.X */.X.|X#includ|
|000007f0| 65 20 22 6a 69 6e 63 6c | 75 64 65 2e 68 22 0a 58 |e "jincl|ude.h".X|
|00000800| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 49 6e 69 74 69 |.X.X/*.X| * Initi|
|00000810| 61 6c 69 7a 65 20 66 6f | 72 20 75 70 73 61 6d 70 |alize fo|r upsamp|
|00000820| 6c 69 6e 67 20 61 20 73 | 63 61 6e 2e 0a 58 20 2a |ling a s|can..X *|
|00000830| 2f 0a 58 0a 58 4d 45 54 | 48 4f 44 44 45 46 20 76 |/.X.XMET|HODDEF v|
|00000840| 6f 69 64 0a 58 75 70 73 | 61 6d 70 6c 65 5f 69 6e |oid.Xups|ample_in|
|00000850| 69 74 20 28 64 65 63 6f | 6d 70 72 65 73 73 5f 69 |it (deco|mpress_i|
|00000860| 6e 66 6f 5f 70 74 72 20 | 63 69 6e 66 6f 29 0a 58 |nfo_ptr |cinfo).X|
|00000870| 7b 0a 58 20 20 2f 2a 20 | 6e 6f 20 77 6f 72 6b 20 |{.X /* |no work |
|00000880| 66 6f 72 20 6e 6f 77 20 | 2a 2f 0a 58 7d 0a 58 0a |for now |*/.X}.X.|
|00000890| 58 0a 58 2f 2a 0a 58 20 | 2a 20 55 70 73 61 6d 70 |X.X/*.X |* Upsamp|
|000008a0| 6c 65 20 70 69 78 65 6c | 20 76 61 6c 75 65 73 20 |le pixel| values |
|000008b0| 6f 66 20 61 20 73 69 6e | 67 6c 65 20 63 6f 6d 70 |of a sin|gle comp|
|000008c0| 6f 6e 65 6e 74 2e 0a 58 | 20 2a 20 54 68 69 73 20 |onent..X| * This |
|000008d0| 76 65 72 73 69 6f 6e 20 | 68 61 6e 64 6c 65 73 20 |version |handles |
|000008e0| 61 6e 79 20 69 6e 74 65 | 67 72 61 6c 20 73 61 6d |any inte|gral sam|
|000008f0| 70 6c 69 6e 67 20 72 61 | 74 69 6f 73 2e 0a 58 20 |pling ra|tios..X |
|00000900| 2a 0a 58 20 2a 20 54 68 | 69 73 20 69 73 20 6e 6f |*.X * Th|is is no|
|00000910| 74 20 75 73 65 64 20 66 | 6f 72 20 74 79 70 69 63 |t used f|or typic|
|00000920| 61 6c 20 4a 50 45 47 20 | 66 69 6c 65 73 2c 20 73 |al JPEG |files, s|
|00000930| 6f 20 69 74 20 6e 65 65 | 64 20 6e 6f 74 20 62 65 |o it nee|d not be|
|00000940| 20 66 61 73 74 2e 0a 58 | 20 2a 20 4e 6f 72 2c 20 | fast..X| * Nor, |
|00000950| 66 6f 72 20 74 68 61 74 | 20 6d 61 74 74 65 72 2c |for that| matter,|
|00000960| 20 69 73 20 69 74 20 70 | 61 72 74 69 63 75 6c 61 | is it p|articula|
|00000970| 72 6c 79 20 61 63 63 75 | 72 61 74 65 3a 20 74 68 |rly accu|rate: th|
|00000980| 65 20 61 6c 67 6f 72 69 | 74 68 6d 20 69 73 0a 58 |e algori|thm is.X|
|00000990| 20 2a 20 73 69 6d 70 6c | 65 20 72 65 70 6c 69 63 | * simpl|e replic|
|000009a0| 61 74 69 6f 6e 20 6f 66 | 20 74 68 65 20 69 6e 70 |ation of| the inp|
|000009b0| 75 74 20 70 69 78 65 6c | 20 6f 6e 74 6f 20 74 68 |ut pixel| onto th|
|000009c0| 65 20 63 6f 72 72 65 73 | 70 6f 6e 64 69 6e 67 20 |e corres|ponding |
|000009d0| 6f 75 74 70 75 74 0a 58 | 20 2a 20 70 69 78 65 6c |output.X| * pixel|
|000009e0| 73 2e 20 20 54 68 65 20 | 68 69 2d 66 61 6c 75 74 |s. The |hi-falut|
|000009f0| 69 6e 20 73 61 6d 70 6c | 69 6e 67 20 6c 69 74 65 |in sampl|ing lite|
|00000a00| 72 61 74 75 72 65 20 72 | 65 66 65 72 73 20 74 6f |rature r|efers to|
|00000a10| 20 74 68 69 73 20 61 73 | 20 61 0a 58 20 2a 20 22 | this as| a.X * "|
|00000a20| 62 6f 78 20 66 69 6c 74 | 65 72 22 2e 20 20 41 20 |box filt|er". A |
|00000a30| 62 6f 78 20 66 69 6c 74 | 65 72 20 74 65 6e 64 73 |box filt|er tends|
|00000a40| 20 74 6f 20 69 6e 74 72 | 6f 64 75 63 65 20 76 69 | to intr|oduce vi|
|00000a50| 73 69 62 6c 65 20 61 72 | 74 69 66 61 63 74 73 2c |sible ar|tifacts,|
|00000a60| 0a 58 20 2a 20 73 6f 20 | 69 66 20 79 6f 75 20 61 |.X * so |if you a|
|00000a70| 72 65 20 61 63 74 75 61 | 6c 6c 79 20 67 6f 69 6e |re actua|lly goin|
|00000a80| 67 20 74 6f 20 75 73 65 | 20 33 3a 31 20 6f 72 20 |g to use| 3:1 or |
|00000a90| 34 3a 31 20 73 61 6d 70 | 6c 69 6e 67 20 72 61 74 |4:1 samp|ling rat|
|00000aa0| 69 6f 73 0a 58 20 2a 20 | 79 6f 75 20 77 6f 75 6c |ios.X * |you woul|
|00000ab0| 64 20 62 65 20 77 65 6c | 6c 20 61 64 76 69 73 65 |d be wel|l advise|
|00000ac0| 64 20 74 6f 20 69 6d 70 | 72 6f 76 65 20 74 68 69 |d to imp|rove thi|
|00000ad0| 73 20 63 6f 64 65 2e 0a | 58 20 2a 2f 0a 58 0a 58 |s code..|X */.X.X|
|00000ae0| 4d 45 54 48 4f 44 44 45 | 46 20 76 6f 69 64 0a 58 |METHODDE|F void.X|
|00000af0| 69 6e 74 5f 75 70 73 61 | 6d 70 6c 65 20 28 64 65 |int_upsa|mple (de|
|00000b00| 63 6f 6d 70 72 65 73 73 | 5f 69 6e 66 6f 5f 70 74 |compress|_info_pt|
|00000b10| 72 20 63 69 6e 66 6f 2c | 20 69 6e 74 20 77 68 69 |r cinfo,| int whi|
|00000b20| 63 68 5f 63 6f 6d 70 6f | 6e 65 6e 74 2c 0a 58 09 |ch_compo|nent,.X.|
|00000b30| 20 20 20 20 20 20 6c 6f | 6e 67 20 69 6e 70 75 74 | lo|ng input|
|00000b40| 5f 63 6f 6c 73 2c 20 69 | 6e 74 20 69 6e 70 75 74 |_cols, i|nt input|
|00000b50| 5f 72 6f 77 73 2c 0a 58 | 09 20 20 20 20 20 20 6c |_rows,.X|. l|
|00000b60| 6f 6e 67 20 6f 75 74 70 | 75 74 5f 63 6f 6c 73 2c |ong outp|ut_cols,|
|00000b70| 20 69 6e 74 20 6f 75 74 | 70 75 74 5f 72 6f 77 73 | int out|put_rows|
|00000b80| 2c 0a 58 09 20 20 20 20 | 20 20 4a 53 41 4d 50 41 |,.X. | JSAMPA|
|00000b90| 52 52 41 59 20 61 62 6f | 76 65 2c 20 4a 53 41 4d |RRAY abo|ve, JSAM|
|00000ba0| 50 41 52 52 41 59 20 69 | 6e 70 75 74 5f 64 61 74 |PARRAY i|nput_dat|
|00000bb0| 61 2c 20 4a 53 41 4d 50 | 41 52 52 41 59 20 62 65 |a, JSAMP|ARRAY be|
|00000bc0| 6c 6f 77 2c 0a 58 09 20 | 20 20 20 20 20 4a 53 41 |low,.X. | JSA|
|00000bd0| 4d 50 41 52 52 41 59 20 | 6f 75 74 70 75 74 5f 64 |MPARRAY |output_d|
|00000be0| 61 74 61 29 0a 58 7b 0a | 58 20 20 6a 70 65 67 5f |ata).X{.|X jpeg_|
|00000bf0| 63 6f 6d 70 6f 6e 65 6e | 74 5f 69 6e 66 6f 20 2a |componen|t_info *|
|00000c00| 20 63 6f 6d 70 70 74 72 | 20 3d 20 63 69 6e 66 6f | compptr| = cinfo|
|00000c10| 2d 3e 63 75 72 5f 63 6f | 6d 70 5f 69 6e 66 6f 5b |->cur_co|mp_info[|
|00000c20| 77 68 69 63 68 5f 63 6f | 6d 70 6f 6e 65 6e 74 5d |which_co|mponent]|
|00000c30| 3b 0a 58 20 20 72 65 67 | 69 73 74 65 72 20 4a 53 |;.X reg|ister JS|
|00000c40| 41 4d 50 52 4f 57 20 69 | 6e 70 74 72 2c 20 6f 75 |AMPROW i|nptr, ou|
|00000c50| 74 70 74 72 3b 0a 58 20 | 20 72 65 67 69 73 74 65 |tptr;.X | registe|
|00000c60| 72 20 4a 53 41 4d 50 4c | 45 20 69 6e 76 61 6c 75 |r JSAMPL|E invalu|
|00000c70| 65 3b 0a 58 20 20 72 65 | 67 69 73 74 65 72 20 73 |e;.X re|gister s|
|00000c80| 68 6f 72 74 20 68 5f 65 | 78 70 61 6e 64 2c 20 68 |hort h_e|xpand, h|
|00000c90| 3b 0a 58 20 20 73 68 6f | 72 74 20 76 5f 65 78 70 |;.X sho|rt v_exp|
|00000ca0| 61 6e 64 2c 20 76 3b 0a | 58 20 20 69 6e 74 20 69 |and, v;.|X int i|
|00000cb0| 6e 72 6f 77 2c 20 6f 75 | 74 72 6f 77 3b 0a 58 20 |nrow, ou|trow;.X |
|00000cc0| 20 72 65 67 69 73 74 65 | 72 20 6c 6f 6e 67 20 69 | registe|r long i|
|00000cd0| 6e 63 6f 6c 3b 0a 58 0a | 58 23 69 66 64 65 66 20 |ncol;.X.|X#ifdef |
|00000ce0| 44 45 42 55 47 09 09 09 | 2f 2a 20 66 6f 72 20 64 |DEBUG...|/* for d|
|00000cf0| 65 62 75 67 67 69 6e 67 | 20 70 69 70 65 6c 69 6e |ebugging| pipelin|
|00000d00| 65 20 63 6f 6e 74 72 6f | 6c 6c 65 72 20 2a 2f 0a |e contro|ller */.|
|00000d10| 58 20 20 69 66 20 28 69 | 6e 70 75 74 5f 72 6f 77 |X if (i|nput_row|
|00000d20| 73 20 21 3d 20 63 6f 6d | 70 70 74 72 2d 3e 76 5f |s != com|pptr->v_|
|00000d30| 73 61 6d 70 5f 66 61 63 | 74 6f 72 20 7c 7c 0a 58 |samp_fac|tor ||.X|
|00000d40| 20 20 20 20 20 20 6f 75 | 74 70 75 74 5f 72 6f 77 | ou|tput_row|
|00000d50| 73 20 21 3d 20 63 69 6e | 66 6f 2d 3e 6d 61 78 5f |s != cin|fo->max_|
|00000d60| 76 5f 73 61 6d 70 5f 66 | 61 63 74 6f 72 20 7c 7c |v_samp_f|actor |||
|00000d70| 0a 58 20 20 20 20 20 20 | 28 69 6e 70 75 74 5f 63 |.X |(input_c|
|00000d80| 6f 6c 73 20 25 20 63 6f | 6d 70 70 74 72 2d 3e 68 |ols % co|mpptr->h|
|00000d90| 5f 73 61 6d 70 5f 66 61 | 63 74 6f 72 29 20 21 3d |_samp_fa|ctor) !=|
|00000da0| 20 30 20 7c 7c 0a 58 20 | 20 20 20 20 20 28 6f 75 | 0 ||.X | (ou|
|00000db0| 74 70 75 74 5f 63 6f 6c | 73 20 25 20 63 69 6e 66 |tput_col|s % cinf|
|00000dc0| 6f 2d 3e 6d 61 78 5f 68 | 5f 73 61 6d 70 5f 66 61 |o->max_h|_samp_fa|
|00000dd0| 63 74 6f 72 29 20 21 3d | 20 30 20 7c 7c 0a 58 20 |ctor) !=| 0 ||.X |
|00000de0| 20 20 20 20 20 6f 75 74 | 70 75 74 5f 63 6f 6c 73 | out|put_cols|
|00000df0| 2a 63 6f 6d 70 70 74 72 | 2d 3e 68 5f 73 61 6d 70 |*compptr|->h_samp|
|00000e00| 5f 66 61 63 74 6f 72 20 | 21 3d 20 69 6e 70 75 74 |_factor |!= input|
|00000e10| 5f 63 6f 6c 73 2a 63 69 | 6e 66 6f 2d 3e 6d 61 78 |_cols*ci|nfo->max|
|00000e20| 5f 68 5f 73 61 6d 70 5f | 66 61 63 74 6f 72 29 0a |_h_samp_|factor).|
|00000e30| 58 20 20 20 20 45 52 52 | 45 58 49 54 28 63 69 6e |X ERR|EXIT(cin|
|00000e40| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2c 20 22 42 |fo->emet|hods, "B|
|00000e50| 6f 67 75 73 20 75 70 73 | 61 6d 70 6c 65 20 70 61 |ogus ups|ample pa|
|00000e60| 72 61 6d 65 74 65 72 73 | 22 29 3b 0a 58 23 65 6e |rameters|");.X#en|
|00000e70| 64 69 66 0a 58 0a 58 20 | 20 68 5f 65 78 70 61 6e |dif.X.X | h_expan|
|00000e80| 64 20 3d 20 63 69 6e 66 | 6f 2d 3e 6d 61 78 5f 68 |d = cinf|o->max_h|
|00000e90| 5f 73 61 6d 70 5f 66 61 | 63 74 6f 72 20 2f 20 63 |_samp_fa|ctor / c|
|00000ea0| 6f 6d 70 70 74 72 2d 3e | 68 5f 73 61 6d 70 5f 66 |ompptr->|h_samp_f|
|00000eb0| 61 63 74 6f 72 3b 0a 58 | 20 20 76 5f 65 78 70 61 |actor;.X| v_expa|
|00000ec0| 6e 64 20 3d 20 63 69 6e | 66 6f 2d 3e 6d 61 78 5f |nd = cin|fo->max_|
|00000ed0| 76 5f 73 61 6d 70 5f 66 | 61 63 74 6f 72 20 2f 20 |v_samp_f|actor / |
|00000ee0| 63 6f 6d 70 70 74 72 2d | 3e 76 5f 73 61 6d 70 5f |compptr-|>v_samp_|
|00000ef0| 66 61 63 74 6f 72 3b 0a | 58 0a 58 20 20 6f 75 74 |factor;.|X.X out|
|00000f00| 72 6f 77 20 3d 20 30 3b | 0a 58 20 20 66 6f 72 20 |row = 0;|.X for |
|00000f10| 28 69 6e 72 6f 77 20 3d | 20 30 3b 20 69 6e 72 6f |(inrow =| 0; inro|
|00000f20| 77 20 3c 20 69 6e 70 75 | 74 5f 72 6f 77 73 3b 20 |w < inpu|t_rows; |
|00000f30| 69 6e 72 6f 77 2b 2b 29 | 20 7b 0a 58 20 20 20 20 |inrow++)| {.X |
|00000f40| 66 6f 72 20 28 76 20 3d | 20 30 3b 20 76 20 3c 20 |for (v =| 0; v < |
|00000f50| 76 5f 65 78 70 61 6e 64 | 3b 20 76 2b 2b 29 20 7b |v_expand|; v++) {|
|00000f60| 0a 58 20 20 20 20 20 20 | 69 6e 70 74 72 20 3d 20 |.X |inptr = |
|00000f70| 69 6e 70 75 74 5f 64 61 | 74 61 5b 69 6e 72 6f 77 |input_da|ta[inrow|
|00000f80| 5d 3b 0a 58 20 20 20 20 | 20 20 6f 75 74 70 74 72 |];.X | outptr|
|00000f90| 20 3d 20 6f 75 74 70 75 | 74 5f 64 61 74 61 5b 6f | = outpu|t_data[o|
|00000fa0| 75 74 72 6f 77 2b 2b 5d | 3b 0a 58 20 20 20 20 20 |utrow++]|;.X |
|00000fb0| 20 66 6f 72 20 28 69 6e | 63 6f 6c 20 3d 20 30 3b | for (in|col = 0;|
|00000fc0| 20 69 6e 63 6f 6c 20 3c | 20 69 6e 70 75 74 5f 63 | incol <| input_c|
|00000fd0| 6f 6c 73 3b 20 69 6e 63 | 6f 6c 2b 2b 29 20 7b 0a |ols; inc|ol++) {.|
|00000fe0| 58 09 69 6e 76 61 6c 75 | 65 20 3d 20 47 45 54 4a |X.invalu|e = GETJ|
|00000ff0| 53 41 4d 50 4c 45 28 2a | 69 6e 70 74 72 2b 2b 29 |SAMPLE(*|inptr++)|
|00001000| 3b 0a 58 09 66 6f 72 20 | 28 68 20 3d 20 30 3b 20 |;.X.for |(h = 0; |
|00001010| 68 20 3c 20 68 5f 65 78 | 70 61 6e 64 3b 20 68 2b |h < h_ex|pand; h+|
|00001020| 2b 29 20 7b 0a 58 09 20 | 20 2a 6f 75 74 70 74 72 |+) {.X. | *outptr|
|00001030| 2b 2b 20 3d 20 69 6e 76 | 61 6c 75 65 3b 0a 58 09 |++ = inv|alue;.X.|
|00001040| 7d 0a 58 20 20 20 20 20 | 20 7d 0a 58 20 20 20 20 |}.X | }.X |
|00001050| 7d 0a 58 20 20 7d 0a 58 | 7d 0a 58 0a 58 0a 58 2f |}.X }.X|}.X.X.X/|
|00001060| 2a 0a 58 20 2a 20 55 70 | 73 61 6d 70 6c 65 20 70 |*.X * Up|sample p|
|00001070| 69 78 65 6c 20 76 61 6c | 75 65 73 20 6f 66 20 61 |ixel val|ues of a|
|00001080| 20 73 69 6e 67 6c 65 20 | 63 6f 6d 70 6f 6e 65 6e | single |componen|
|00001090| 74 2e 0a 58 20 2a 20 54 | 68 69 73 20 76 65 72 73 |t..X * T|his vers|
|000010a0| 69 6f 6e 20 68 61 6e 64 | 6c 65 73 20 74 68 65 20 |ion hand|les the |
|000010b0| 63 6f 6d 6d 6f 6e 20 63 | 61 73 65 20 6f 66 20 32 |common c|ase of 2|
|000010c0| 3a 31 20 68 6f 72 69 7a | 6f 6e 74 61 6c 20 61 6e |:1 horiz|ontal an|
|000010d0| 64 20 31 3a 31 20 76 65 | 72 74 69 63 61 6c 2e 0a |d 1:1 ve|rtical..|
|000010e0| 58 20 2a 0a 58 20 2a 20 | 54 68 65 20 75 70 73 61 |X *.X * |The upsa|
|000010f0| 6d 70 6c 69 6e 67 20 61 | 6c 67 6f 72 69 74 68 6d |mpling a|lgorithm|
|00001100| 20 69 73 20 6c 69 6e 65 | 61 72 20 69 6e 74 65 72 | is line|ar inter|
|00001110| 70 6f 6c 61 74 69 6f 6e | 20 62 65 74 77 65 65 6e |polation| between|
|00001120| 20 70 69 78 65 6c 20 63 | 65 6e 74 65 72 73 2c 0a | pixel c|enters,.|
|00001130| 58 20 2a 20 61 6c 73 6f | 20 6b 6e 6f 77 6e 20 61 |X * also| known a|
|00001140| 73 20 61 20 22 74 72 69 | 61 6e 67 6c 65 20 66 69 |s a "tri|angle fi|
|00001150| 6c 74 65 72 22 2e 20 20 | 54 68 69 73 20 69 73 20 |lter". |This is |
|00001160| 61 20 67 6f 6f 64 20 63 | 6f 6d 70 72 6f 6d 69 73 |a good c|ompromis|
|00001170| 65 20 62 65 74 77 65 65 | 6e 0a 58 20 2a 20 73 70 |e betwee|n.X * sp|
|00001180| 65 65 64 20 61 6e 64 20 | 76 69 73 75 61 6c 20 71 |eed and |visual q|
|00001190| 75 61 6c 69 74 79 2e 20 | 20 54 68 65 20 63 65 6e |uality. | The cen|
|000011a0| 74 65 72 73 20 6f 66 20 | 74 68 65 20 6f 75 74 70 |ters of |the outp|
|000011b0| 75 74 20 70 69 78 65 6c | 73 20 61 72 65 20 31 2f |ut pixel|s are 1/|
|000011c0| 34 20 61 6e 64 20 33 2f | 34 0a 58 20 2a 20 6f 66 |4 and 3/|4.X * of|
|000011d0| 20 74 68 65 20 77 61 79 | 20 62 65 74 77 65 65 6e | the way| between|
|000011e0| 20 69 6e 70 75 74 20 70 | 69 78 65 6c 20 63 65 6e | input p|ixel cen|
|000011f0| 74 65 72 73 2e 0a 58 20 | 2a 2f 0a 58 0a 58 4d 45 |ters..X |*/.X.XME|
|00001200| 54 48 4f 44 44 45 46 20 | 76 6f 69 64 0a 58 68 32 |THODDEF |void.Xh2|
|00001210| 76 31 5f 75 70 73 61 6d | 70 6c 65 20 28 64 65 63 |v1_upsam|ple (dec|
|00001220| 6f 6d 70 72 65 73 73 5f | 69 6e 66 6f 5f 70 74 72 |ompress_|info_ptr|
|00001230| 20 63 69 6e 66 6f 2c 20 | 69 6e 74 20 77 68 69 63 | cinfo, |int whic|
|00001240| 68 5f 63 6f 6d 70 6f 6e | 65 6e 74 2c 0a 58 09 20 |h_compon|ent,.X. |
|00001250| 20 20 20 20 20 20 6c 6f | 6e 67 20 69 6e 70 75 74 | lo|ng input|
|00001260| 5f 63 6f 6c 73 2c 20 69 | 6e 74 20 69 6e 70 75 74 |_cols, i|nt input|
|00001270| 5f 72 6f 77 73 2c 0a 58 | 09 20 20 20 20 20 20 20 |_rows,.X|. |
|00001280| 6c 6f 6e 67 20 6f 75 74 | 70 75 74 5f 63 6f 6c 73 |long out|put_cols|
|00001290| 2c 20 69 6e 74 20 6f 75 | 74 70 75 74 5f 72 6f 77 |, int ou|tput_row|
|000012a0| 73 2c 0a 58 09 20 20 20 | 20 20 20 20 4a 53 41 4d |s,.X. | JSAM|
|000012b0| 50 41 52 52 41 59 20 61 | 62 6f 76 65 2c 20 4a 53 |PARRAY a|bove, JS|
|000012c0| 41 4d 50 41 52 52 41 59 | 20 69 6e 70 75 74 5f 64 |AMPARRAY| input_d|
|000012d0| 61 74 61 2c 20 4a 53 41 | 4d 50 41 52 52 41 59 20 |ata, JSA|MPARRAY |
|000012e0| 62 65 6c 6f 77 2c 0a 58 | 09 20 20 20 20 20 20 20 |below,.X|. |
|000012f0| 4a 53 41 4d 50 41 52 52 | 41 59 20 6f 75 74 70 75 |JSAMPARR|AY outpu|
|00001300| 74 5f 64 61 74 61 29 0a | 58 7b 0a 58 20 20 72 65 |t_data).|X{.X re|
|00001310| 67 69 73 74 65 72 20 4a | 53 41 4d 50 52 4f 57 20 |gister J|SAMPROW |
|00001320| 69 6e 70 74 72 2c 20 6f | 75 74 70 74 72 3b 0a 58 |inptr, o|utptr;.X|
|00001330| 20 20 72 65 67 69 73 74 | 65 72 20 69 6e 74 20 69 | regist|er int i|
|00001340| 6e 76 61 6c 75 65 3b 0a | 58 20 20 69 6e 74 20 69 |nvalue;.|X int i|
|00001350| 6e 72 6f 77 3b 0a 58 20 | 20 72 65 67 69 73 74 65 |nrow;.X | registe|
|00001360| 72 20 6c 6f 6e 67 20 63 | 6f 6c 63 74 72 3b 0a 58 |r long c|olctr;.X|
|00001370| 0a 58 23 69 66 64 65 66 | 20 44 45 42 55 47 09 09 |.X#ifdef| DEBUG..|
|00001380| 09 2f 2a 20 66 6f 72 20 | 64 65 62 75 67 67 69 6e |./* for |debuggin|
|00001390| 67 20 70 69 70 65 6c 69 | 6e 65 20 63 6f 6e 74 72 |g pipeli|ne contr|
|000013a0| 6f 6c 6c 65 72 20 2a 2f | 0a 58 20 20 6a 70 65 67 |oller */|.X jpeg|
|000013b0| 5f 63 6f 6d 70 6f 6e 65 | 6e 74 5f 69 6e 66 6f 20 |_compone|nt_info |
|000013c0| 2a 20 63 6f 6d 70 70 74 | 72 20 3d 20 63 69 6e 66 |* comppt|r = cinf|
|000013d0| 6f 2d 3e 63 75 72 5f 63 | 6f 6d 70 5f 69 6e 66 6f |o->cur_c|omp_info|
|000013e0| 5b 77 68 69 63 68 5f 63 | 6f 6d 70 6f 6e 65 6e 74 |[which_c|omponent|
|000013f0| 5d 3b 0a 58 20 20 69 66 | 20 28 69 6e 70 75 74 5f |];.X if| (input_|
|00001400| 72 6f 77 73 20 21 3d 20 | 63 6f 6d 70 70 74 72 2d |rows != |compptr-|
|00001410| 3e 76 5f 73 61 6d 70 5f | 66 61 63 74 6f 72 20 7c |>v_samp_|factor ||
|00001420| 7c 0a 58 20 20 20 20 20 | 20 6f 75 74 70 75 74 5f ||.X | output_|
|00001430| 72 6f 77 73 20 21 3d 20 | 63 69 6e 66 6f 2d 3e 6d |rows != |cinfo->m|
|00001440| 61 78 5f 76 5f 73 61 6d | 70 5f 66 61 63 74 6f 72 |ax_v_sam|p_factor|
|00001450| 20 7c 7c 0a 58 20 20 20 | 20 20 20 28 69 6e 70 75 | ||.X | (inpu|
|00001460| 74 5f 63 6f 6c 73 20 25 | 20 63 6f 6d 70 70 74 72 |t_cols %| compptr|
|00001470| 2d 3e 68 5f 73 61 6d 70 | 5f 66 61 63 74 6f 72 29 |->h_samp|_factor)|
|00001480| 20 21 3d 20 30 20 7c 7c | 0a 58 20 20 20 20 20 20 | != 0 |||.X |
|00001490| 28 6f 75 74 70 75 74 5f | 63 6f 6c 73 20 25 20 63 |(output_|cols % c|
|000014a0| 69 6e 66 6f 2d 3e 6d 61 | 78 5f 68 5f 73 61 6d 70 |info->ma|x_h_samp|
|000014b0| 5f 66 61 63 74 6f 72 29 | 20 21 3d 20 30 20 7c 7c |_factor)| != 0 |||
|000014c0| 0a 58 20 20 20 20 20 20 | 6f 75 74 70 75 74 5f 63 |.X |output_c|
|000014d0| 6f 6c 73 2a 63 6f 6d 70 | 70 74 72 2d 3e 68 5f 73 |ols*comp|ptr->h_s|
|000014e0| 61 6d 70 5f 66 61 63 74 | 6f 72 20 21 3d 20 69 6e |amp_fact|or != in|
|000014f0| 70 75 74 5f 63 6f 6c 73 | 2a 63 69 6e 66 6f 2d 3e |put_cols|*cinfo->|
|00001500| 6d 61 78 5f 68 5f 73 61 | 6d 70 5f 66 61 63 74 6f |max_h_sa|mp_facto|
|00001510| 72 29 0a 58 20 20 20 20 | 45 52 52 45 58 49 54 28 |r).X |ERREXIT(|
|00001520| 63 69 6e 66 6f 2d 3e 65 | 6d 65 74 68 6f 64 73 2c |cinfo->e|methods,|
|00001530| 20 22 42 6f 67 75 73 20 | 75 70 73 61 6d 70 6c 65 | "Bogus |upsample|
|00001540| 20 70 61 72 61 6d 65 74 | 65 72 73 22 29 3b 0a 58 | paramet|ers");.X|
|00001550| 23 65 6e 64 69 66 0a 58 | 0a 58 20 20 66 6f 72 20 |#endif.X|.X for |
|00001560| 28 69 6e 72 6f 77 20 3d | 20 30 3b 20 69 6e 72 6f |(inrow =| 0; inro|
|00001570| 77 20 3c 20 69 6e 70 75 | 74 5f 72 6f 77 73 3b 20 |w < inpu|t_rows; |
|00001580| 69 6e 72 6f 77 2b 2b 29 | 20 7b 0a 58 20 20 20 20 |inrow++)| {.X |
|00001590| 69 6e 70 74 72 20 3d 20 | 69 6e 70 75 74 5f 64 61 |inptr = |input_da|
|000015a0| 74 61 5b 69 6e 72 6f 77 | 5d 3b 0a 58 20 20 20 20 |ta[inrow|];.X |
|000015b0| 6f 75 74 70 74 72 20 3d | 20 6f 75 74 70 75 74 5f |outptr =| output_|
|000015c0| 64 61 74 61 5b 69 6e 72 | 6f 77 5d 3b 0a 58 20 20 |data[inr|ow];.X |
|000015d0| 20 20 2f 2a 20 53 70 65 | 63 69 61 6c 20 63 61 73 | /* Spe|cial cas|
|000015e0| 65 20 66 6f 72 20 66 69 | 72 73 74 20 63 6f 6c 75 |e for fi|rst colu|
|000015f0| 6d 6e 20 2a 2f 0a 58 20 | 20 20 20 69 6e 76 61 6c |mn */.X | inval|
|00001600| 75 65 20 3d 20 47 45 54 | 4a 53 41 4d 50 4c 45 28 |ue = GET|JSAMPLE(|
|00001610| 2a 69 6e 70 74 72 2b 2b | 29 3b 0a 58 20 20 20 20 |*inptr++|);.X |
|00001620| 2a 6f 75 74 70 74 72 2b | 2b 20 3d 20 28 4a 53 41 |*outptr+|+ = (JSA|
|00001630| 4d 50 4c 45 29 20 69 6e | 76 61 6c 75 65 3b 0a 58 |MPLE) in|value;.X|
|00001640| 20 20 20 20 2a 6f 75 74 | 70 74 72 2b 2b 20 3d 20 | *out|ptr++ = |
|00001650| 28 4a 53 41 4d 50 4c 45 | 29 20 28 28 69 6e 76 61 |(JSAMPLE|) ((inva|
|00001660| 6c 75 65 20 2a 20 33 20 | 2b 20 47 45 54 4a 53 41 |lue * 3 |+ GETJSA|
|00001670| 4d 50 4c 45 28 2a 69 6e | 70 74 72 29 20 2b 20 32 |MPLE(*in|ptr) + 2|
|00001680| 29 20 3e 3e 20 32 29 3b | 0a 58 0a 58 20 20 20 20 |) >> 2);|.X.X |
|00001690| 66 6f 72 20 28 63 6f 6c | 63 74 72 20 3d 20 69 6e |for (col|ctr = in|
|000016a0| 70 75 74 5f 63 6f 6c 73 | 20 2d 20 32 3b 20 63 6f |put_cols| - 2; co|
|000016b0| 6c 63 74 72 20 3e 20 30 | 3b 20 63 6f 6c 63 74 72 |lctr > 0|; colctr|
|000016c0| 2d 2d 29 20 7b 0a 58 20 | 20 20 20 20 20 2f 2a 20 |--) {.X | /* |
|000016d0| 47 65 6e 65 72 61 6c 20 | 63 61 73 65 3a 20 33 2f |General |case: 3/|
|000016e0| 34 20 2a 20 6e 65 61 72 | 65 72 20 70 69 78 65 6c |4 * near|er pixel|
|000016f0| 20 2b 20 31 2f 34 20 2a | 20 66 75 72 74 68 65 72 | + 1/4 *| further|
|00001700| 20 70 69 78 65 6c 20 2a | 2f 0a 58 20 20 20 20 20 | pixel *|/.X |
|00001710| 20 69 6e 76 61 6c 75 65 | 20 3d 20 47 45 54 4a 53 | invalue| = GETJS|
|00001720| 41 4d 50 4c 45 28 2a 69 | 6e 70 74 72 2b 2b 29 20 |AMPLE(*i|nptr++) |
|00001730| 2a 20 33 3b 0a 58 20 20 | 20 20 20 20 2a 6f 75 74 |* 3;.X | *out|
|00001740| 70 74 72 2b 2b 20 3d 20 | 28 4a 53 41 4d 50 4c 45 |ptr++ = |(JSAMPLE|
|00001750| 29 20 28 28 69 6e 76 61 | 6c 75 65 20 2b 20 47 45 |) ((inva|lue + GE|
|00001760| 54 4a 53 41 4d 50 4c 45 | 28 69 6e 70 74 72 5b 2d |TJSAMPLE|(inptr[-|
|00001770| 32 5d 29 20 2b 20 32 29 | 20 3e 3e 20 32 29 3b 0a |2]) + 2)| >> 2);.|
|00001780| 58 20 20 20 20 20 20 2a | 6f 75 74 70 74 72 2b 2b |X *|outptr++|
|00001790| 20 3d 20 28 4a 53 41 4d | 50 4c 45 29 20 28 28 69 | = (JSAM|PLE) ((i|
|000017a0| 6e 76 61 6c 75 65 20 2b | 20 47 45 54 4a 53 41 4d |nvalue +| GETJSAM|
|000017b0| 50 4c 45 28 2a 69 6e 70 | 74 72 29 20 2b 20 32 29 |PLE(*inp|tr) + 2)|
|000017c0| 20 3e 3e 20 32 29 3b 0a | 58 20 20 20 20 7d 0a 58 | >> 2);.|X }.X|
|000017d0| 0a 58 20 20 20 20 2f 2a | 20 53 70 65 63 69 61 6c |.X /*| Special|
|000017e0| 20 63 61 73 65 20 66 6f | 72 20 6c 61 73 74 20 63 | case fo|r last c|
|000017f0| 6f 6c 75 6d 6e 20 2a 2f | 0a 58 20 20 20 20 69 6e |olumn */|.X in|
|00001800| 76 61 6c 75 65 20 3d 20 | 47 45 54 4a 53 41 4d 50 |value = |GETJSAMP|
|00001810| 4c 45 28 2a 69 6e 70 74 | 72 29 3b 0a 58 20 20 20 |LE(*inpt|r);.X |
|00001820| 20 2a 6f 75 74 70 74 72 | 2b 2b 20 3d 20 28 4a 53 | *outptr|++ = (JS|
|00001830| 41 4d 50 4c 45 29 20 28 | 28 69 6e 76 61 6c 75 65 |AMPLE) (|(invalue|
|00001840| 20 2a 20 33 20 2b 20 47 | 45 54 4a 53 41 4d 50 4c | * 3 + G|ETJSAMPL|
|00001850| 45 28 69 6e 70 74 72 5b | 2d 31 5d 29 20 2b 20 32 |E(inptr[|-1]) + 2|
|00001860| 29 20 3e 3e 20 32 29 3b | 0a 58 20 20 20 20 2a 6f |) >> 2);|.X *o|
|00001870| 75 74 70 74 72 2b 2b 20 | 3d 20 28 4a 53 41 4d 50 |utptr++ |= (JSAMP|
|00001880| 4c 45 29 20 69 6e 76 61 | 6c 75 65 3b 0a 58 20 20 |LE) inva|lue;.X |
|00001890| 7d 0a 58 7d 0a 58 0a 58 | 0a 58 2f 2a 0a 58 20 2a |}.X}.X.X|.X/*.X *|
|000018a0| 20 55 70 73 61 6d 70 6c | 65 20 70 69 78 65 6c 20 | Upsampl|e pixel |
|000018b0| 76 61 6c 75 65 73 20 6f | 66 20 61 20 73 69 6e 67 |values o|f a sing|
|000018c0| 6c 65 20 63 6f 6d 70 6f | 6e 65 6e 74 2e 0a 58 20 |le compo|nent..X |
|000018d0| 2a 20 54 68 69 73 20 76 | 65 72 73 69 6f 6e 20 68 |* This v|ersion h|
|000018e0| 61 6e 64 6c 65 73 20 74 | 68 65 20 63 6f 6d 6d 6f |andles t|he commo|
|000018f0| 6e 20 63 61 73 65 20 6f | 66 20 32 3a 31 20 68 6f |n case o|f 2:1 ho|
|00001900| 72 69 7a 6f 6e 74 61 6c | 20 61 6e 64 20 32 3a 31 |rizontal| and 2:1|
|00001910| 20 76 65 72 74 69 63 61 | 6c 2e 0a 58 20 2a 0a 58 | vertica|l..X *.X|
|00001920| 20 2a 20 54 68 65 20 75 | 70 73 61 6d 70 6c 69 6e | * The u|psamplin|
|00001930| 67 20 61 6c 67 6f 72 69 | 74 68 6d 20 69 73 20 6c |g algori|thm is l|
|00001940| 69 6e 65 61 72 20 69 6e | 74 65 72 70 6f 6c 61 74 |inear in|terpolat|
|00001950| 69 6f 6e 20 62 65 74 77 | 65 65 6e 20 70 69 78 65 |ion betw|een pixe|
|00001960| 6c 20 63 65 6e 74 65 72 | 73 2c 0a 58 20 2a 20 61 |l center|s,.X * a|
|00001970| 6c 73 6f 20 6b 6e 6f 77 | 6e 20 61 73 20 61 20 22 |lso know|n as a "|
|00001980| 74 72 69 61 6e 67 6c 65 | 20 66 69 6c 74 65 72 22 |triangle| filter"|
|00001990| 2e 20 20 54 68 69 73 20 | 69 73 20 61 20 67 6f 6f |. This |is a goo|
|000019a0| 64 20 63 6f 6d 70 72 6f | 6d 69 73 65 20 62 65 74 |d compro|mise bet|
|000019b0| 77 65 65 6e 0a 58 20 2a | 20 73 70 65 65 64 20 61 |ween.X *| speed a|
|000019c0| 6e 64 20 76 69 73 75 61 | 6c 20 71 75 61 6c 69 74 |nd visua|l qualit|
|000019d0| 79 2e 20 20 54 68 65 20 | 63 65 6e 74 65 72 73 20 |y. The |centers |
|000019e0| 6f 66 20 74 68 65 20 6f | 75 74 70 75 74 20 70 69 |of the o|utput pi|
|000019f0| 78 65 6c 73 20 61 72 65 | 20 31 2f 34 20 61 6e 64 |xels are| 1/4 and|
|00001a00| 20 33 2f 34 0a 58 20 2a | 20 6f 66 20 74 68 65 20 | 3/4.X *| of the |
|00001a10| 77 61 79 20 62 65 74 77 | 65 65 6e 20 69 6e 70 75 |way betw|een inpu|
|00001a20| 74 20 70 69 78 65 6c 20 | 63 65 6e 74 65 72 73 2e |t pixel |centers.|
|00001a30| 0a 58 20 2a 2f 0a 58 0a | 58 4d 45 54 48 4f 44 44 |.X */.X.|XMETHODD|
|00001a40| 45 46 20 76 6f 69 64 0a | 58 68 32 76 32 5f 75 70 |EF void.|Xh2v2_up|
|00001a50| 73 61 6d 70 6c 65 20 28 | 64 65 63 6f 6d 70 72 65 |sample (|decompre|
|00001a60| 73 73 5f 69 6e 66 6f 5f | 70 74 72 20 63 69 6e 66 |ss_info_|ptr cinf|
|00001a70| 6f 2c 20 69 6e 74 20 77 | 68 69 63 68 5f 63 6f 6d |o, int w|hich_com|
|00001a80| 70 6f 6e 65 6e 74 2c 0a | 58 09 20 20 20 20 20 20 |ponent,.|X. |
|00001a90| 20 6c 6f 6e 67 20 69 6e | 70 75 74 5f 63 6f 6c 73 | long in|put_cols|
|00001aa0| 2c 20 69 6e 74 20 69 6e | 70 75 74 5f 72 6f 77 73 |, int in|put_rows|
|00001ab0| 2c 0a 58 09 20 20 20 20 | 20 20 20 6c 6f 6e 67 20 |,.X. | long |
|00001ac0| 6f 75 74 70 75 74 5f 63 | 6f 6c 73 2c 20 69 6e 74 |output_c|ols, int|
|00001ad0| 20 6f 75 74 70 75 74 5f | 72 6f 77 73 2c 0a 58 09 | output_|rows,.X.|
|00001ae0| 20 20 20 20 20 20 20 4a | 53 41 4d 50 41 52 52 41 | J|SAMPARRA|
|00001af0| 59 20 61 62 6f 76 65 2c | 20 4a 53 41 4d 50 41 52 |Y above,| JSAMPAR|
|00001b00| 52 41 59 20 69 6e 70 75 | 74 5f 64 61 74 61 2c 20 |RAY inpu|t_data, |
|00001b10| 4a 53 41 4d 50 41 52 52 | 41 59 20 62 65 6c 6f 77 |JSAMPARR|AY below|
|00001b20| 2c 0a 58 09 20 20 20 20 | 20 20 20 4a 53 41 4d 50 |,.X. | JSAMP|
|00001b30| 41 52 52 41 59 20 6f 75 | 74 70 75 74 5f 64 61 74 |ARRAY ou|tput_dat|
|00001b40| 61 29 0a 58 7b 0a 58 20 | 20 72 65 67 69 73 74 65 |a).X{.X | registe|
|00001b50| 72 20 4a 53 41 4d 50 52 | 4f 57 20 69 6e 70 74 72 |r JSAMPR|OW inptr|
|00001b60| 30 2c 20 69 6e 70 74 72 | 31 2c 20 6f 75 74 70 74 |0, inptr|1, outpt|
|00001b70| 72 3b 0a 58 23 69 66 64 | 65 66 20 45 49 47 48 54 |r;.X#ifd|ef EIGHT|
|00001b80| 5f 42 49 54 5f 53 41 4d | 50 4c 45 53 0a 58 20 20 |_BIT_SAM|PLES.X |
|00001b90| 72 65 67 69 73 74 65 72 | 20 69 6e 74 20 74 68 69 |register| int thi|
|00001ba0| 73 63 6f 6c 73 75 6d 2c | 20 6c 61 73 74 63 6f 6c |scolsum,| lastcol|
|00001bb0| 73 75 6d 2c 20 6e 65 78 | 74 63 6f 6c 73 75 6d 3b |sum, nex|tcolsum;|
|00001bc0| 0a 58 23 65 6c 73 65 0a | 58 20 20 72 65 67 69 73 |.X#else.|X regis|
|00001bd0| 74 65 72 20 49 4e 54 33 | 32 20 74 68 69 73 63 6f |ter INT3|2 thisco|
|00001be0| 6c 73 75 6d 2c 20 6c 61 | 73 74 63 6f 6c 73 75 6d |lsum, la|stcolsum|
|00001bf0| 2c 20 6e 65 78 74 63 6f | 6c 73 75 6d 3b 0a 58 23 |, nextco|lsum;.X#|
|00001c00| 65 6e 64 69 66 0a 58 20 | 20 69 6e 74 20 69 6e 72 |endif.X | int inr|
|00001c10| 6f 77 2c 20 6f 75 74 72 | 6f 77 2c 20 76 3b 0a 58 |ow, outr|ow, v;.X|
|00001c20| 20 20 72 65 67 69 73 74 | 65 72 20 6c 6f 6e 67 20 | regist|er long |
|00001c30| 63 6f 6c 63 74 72 3b 0a | 58 0a 58 23 69 66 64 65 |colctr;.|X.X#ifde|
|00001c40| 66 20 44 45 42 55 47 09 | 09 09 2f 2a 20 66 6f 72 |f DEBUG.|../* for|
|00001c50| 20 64 65 62 75 67 67 69 | 6e 67 20 70 69 70 65 6c | debuggi|ng pipel|
|00001c60| 69 6e 65 20 63 6f 6e 74 | 72 6f 6c 6c 65 72 20 2a |ine cont|roller *|
|00001c70| 2f 0a 58 20 20 6a 70 65 | 67 5f 63 6f 6d 70 6f 6e |/.X jpe|g_compon|
|00001c80| 65 6e 74 5f 69 6e 66 6f | 20 2a 20 63 6f 6d 70 70 |ent_info| * compp|
|00001c90| 74 72 20 3d 20 63 69 6e | 66 6f 2d 3e 63 75 72 5f |tr = cin|fo->cur_|
|00001ca0| 63 6f 6d 70 5f 69 6e 66 | 6f 5b 77 68 69 63 68 5f |comp_inf|o[which_|
|00001cb0| 63 6f 6d 70 6f 6e 65 6e | 74 5d 3b 0a 58 20 20 69 |componen|t];.X i|
|00001cc0| 66 20 28 69 6e 70 75 74 | 5f 72 6f 77 73 20 21 3d |f (input|_rows !=|
|00001cd0| 20 63 6f 6d 70 70 74 72 | 2d 3e 76 5f 73 61 6d 70 | compptr|->v_samp|
|00001ce0| 5f 66 61 63 74 6f 72 20 | 7c 7c 0a 58 20 20 20 20 |_factor |||.X |
|00001cf0| 20 20 6f 75 74 70 75 74 | 5f 72 6f 77 73 20 21 3d | output|_rows !=|
|00001d00| 20 63 69 6e 66 6f 2d 3e | 6d 61 78 5f 76 5f 73 61 | cinfo->|max_v_sa|
|00001d10| 6d 70 5f 66 61 63 74 6f | 72 20 7c 7c 0a 58 20 20 |mp_facto|r ||.X |
|00001d20| 20 20 20 20 28 69 6e 70 | 75 74 5f 63 6f 6c 73 20 | (inp|ut_cols |
|00001d30| 25 20 63 6f 6d 70 70 74 | 72 2d 3e 68 5f 73 61 6d |% comppt|r->h_sam|
|00001d40| 70 5f 66 61 63 74 6f 72 | 29 20 21 3d 20 30 20 7c |p_factor|) != 0 ||
|00001d50| 7c 0a 58 20 20 20 20 20 | 20 28 6f 75 74 70 75 74 ||.X | (output|
|00001d60| 5f 63 6f 6c 73 20 25 20 | 63 69 6e 66 6f 2d 3e 6d |_cols % |cinfo->m|
|00001d70| 61 78 5f 68 5f 73 61 6d | 70 5f 66 61 63 74 6f 72 |ax_h_sam|p_factor|
|00001d80| 29 20 21 3d 20 30 20 7c | 7c 0a 58 20 20 20 20 20 |) != 0 |||.X |
|00001d90| 20 6f 75 74 70 75 74 5f | 63 6f 6c 73 2a 63 6f 6d | output_|cols*com|
|00001da0| 70 70 74 72 2d 3e 68 5f | 73 61 6d 70 5f 66 61 63 |pptr->h_|samp_fac|
|00001db0| 74 6f 72 20 21 3d 20 69 | 6e 70 75 74 5f 63 6f 6c |tor != i|nput_col|
|00001dc0| 73 2a 63 69 6e 66 6f 2d | 3e 6d 61 78 5f 68 5f 73 |s*cinfo-|>max_h_s|
|00001dd0| 61 6d 70 5f 66 61 63 74 | 6f 72 29 0a 58 20 20 20 |amp_fact|or).X |
|00001de0| 20 45 52 52 45 58 49 54 | 28 63 69 6e 66 6f 2d 3e | ERREXIT|(cinfo->|
|00001df0| 65 6d 65 74 68 6f 64 73 | 2c 20 22 42 6f 67 75 73 |emethods|, "Bogus|
|00001e00| 20 75 70 73 61 6d 70 6c | 65 20 70 61 72 61 6d 65 | upsampl|e parame|
|00001e10| 74 65 72 73 22 29 3b 0a | 58 23 65 6e 64 69 66 0a |ters");.|X#endif.|
|00001e20| 58 0a 58 20 20 6f 75 74 | 72 6f 77 20 3d 20 30 3b |X.X out|row = 0;|
|00001e30| 0a 58 20 20 66 6f 72 20 | 28 69 6e 72 6f 77 20 3d |.X for |(inrow =|
|00001e40| 20 30 3b 20 69 6e 72 6f | 77 20 3c 20 69 6e 70 75 | 0; inro|w < inpu|
|00001e50| 74 5f 72 6f 77 73 3b 20 | 69 6e 72 6f 77 2b 2b 29 |t_rows; |inrow++)|
|00001e60| 20 7b 0a 58 20 20 20 20 | 66 6f 72 20 28 76 20 3d | {.X |for (v =|
|00001e70| 20 30 3b 20 76 20 3c 20 | 32 3b 20 76 2b 2b 29 20 | 0; v < |2; v++) |
|00001e80| 7b 0a 58 20 20 20 20 20 | 20 2f 2a 20 69 6e 70 74 |{.X | /* inpt|
|00001e90| 72 30 20 70 6f 69 6e 74 | 73 20 74 6f 20 6e 65 61 |r0 point|s to nea|
|00001ea0| 72 65 73 74 20 69 6e 70 | 75 74 20 72 6f 77 2c 20 |rest inp|ut row, |
|00001eb0| 69 6e 70 74 72 31 20 70 | 6f 69 6e 74 73 20 74 6f |inptr1 p|oints to|
|00001ec0| 20 6e 65 78 74 20 6e 65 | 61 72 65 73 74 20 2a 2f | next ne|arest */|
|00001ed0| 0a 58 20 20 20 20 20 20 | 69 6e 70 74 72 30 20 3d |.X |inptr0 =|
|00001ee0| 20 69 6e 70 75 74 5f 64 | 61 74 61 5b 69 6e 72 6f | input_d|ata[inro|
|00001ef0| 77 5d 3b 0a 58 20 20 20 | 20 20 20 69 66 20 28 76 |w];.X | if (v|
|00001f00| 20 3d 3d 20 30 29 20 7b | 09 09 2f 2a 20 6e 65 78 | == 0) {|../* nex|
|00001f10| 74 20 6e 65 61 72 65 73 | 74 20 69 73 20 72 6f 77 |t neares|t is row|
|00001f20| 20 61 62 6f 76 65 20 2a | 2f 0a 58 09 69 66 20 28 | above *|/.X.if (|
|00001f30| 69 6e 72 6f 77 20 3d 3d | 20 30 29 0a 58 09 20 20 |inrow ==| 0).X. |
|00001f40| 69 6e 70 74 72 31 20 3d | 20 61 62 6f 76 65 5b 69 |inptr1 =| above[i|
|00001f50| 6e 70 75 74 5f 72 6f 77 | 73 2d 31 5d 3b 0a 58 09 |nput_row|s-1];.X.|
|00001f60| 65 6c 73 65 0a 58 09 20 | 20 69 6e 70 74 72 31 20 |else.X. | inptr1 |
|00001f70| 3d 20 69 6e 70 75 74 5f | 64 61 74 61 5b 69 6e 72 |= input_|data[inr|
|00001f80| 6f 77 2d 31 5d 3b 0a 58 | 20 20 20 20 20 20 7d 20 |ow-1];.X| } |
|00001f90| 65 6c 73 65 20 7b 09 09 | 09 2f 2a 20 6e 65 78 74 |else {..|./* next|
|00001fa0| 20 6e 65 61 72 65 73 74 | 20 69 73 20 72 6f 77 20 | nearest| is row |
|00001fb0| 62 65 6c 6f 77 20 2a 2f | 0a 58 09 69 66 20 28 69 |below */|.X.if (i|
|00001fc0| 6e 72 6f 77 20 3d 3d 20 | 69 6e 70 75 74 5f 72 6f |nrow == |input_ro|
|00001fd0| 77 73 2d 31 29 0a 58 09 | 20 20 69 6e 70 74 72 31 |ws-1).X.| inptr1|
|00001fe0| 20 3d 20 62 65 6c 6f 77 | 5b 30 5d 3b 0a 58 09 65 | = below|[0];.X.e|
|00001ff0| 6c 73 65 0a 58 09 20 20 | 69 6e 70 74 72 31 20 3d |lse.X. |inptr1 =|
|00002000| 20 69 6e 70 75 74 5f 64 | 61 74 61 5b 69 6e 72 6f | input_d|ata[inro|
|00002010| 77 2b 31 5d 3b 0a 58 20 | 20 20 20 20 20 7d 0a 58 |w+1];.X | }.X|
|00002020| 20 20 20 20 20 20 6f 75 | 74 70 74 72 20 3d 20 6f | ou|tptr = o|
|00002030| 75 74 70 75 74 5f 64 61 | 74 61 5b 6f 75 74 72 6f |utput_da|ta[outro|
|00002040| 77 2b 2b 5d 3b 0a 58 0a | 58 20 20 20 20 20 20 2f |w++];.X.|X /|
|00002050| 2a 20 53 70 65 63 69 61 | 6c 20 63 61 73 65 20 66 |* Specia|l case f|
|00002060| 6f 72 20 66 69 72 73 74 | 20 63 6f 6c 75 6d 6e 20 |or first| column |
|00002070| 2a 2f 0a 58 20 20 20 20 | 20 20 74 68 69 73 63 6f |*/.X | thisco|
|00002080| 6c 73 75 6d 20 3d 20 47 | 45 54 4a 53 41 4d 50 4c |lsum = G|ETJSAMPL|
|00002090| 45 28 2a 69 6e 70 74 72 | 30 2b 2b 29 20 2a 20 33 |E(*inptr|0++) * 3|
|000020a0| 20 2b 20 47 45 54 4a 53 | 41 4d 50 4c 45 28 2a 69 | + GETJS|AMPLE(*i|
|000020b0| 6e 70 74 72 31 2b 2b 29 | 3b 0a 58 20 20 20 20 20 |nptr1++)|;.X |
|000020c0| 20 6e 65 78 74 63 6f 6c | 73 75 6d 20 3d 20 47 45 | nextcol|sum = GE|
|000020d0| 54 4a 53 41 4d 50 4c 45 | 28 2a 69 6e 70 74 72 30 |TJSAMPLE|(*inptr0|
|000020e0| 2b 2b 29 20 2a 20 33 20 | 2b 20 47 45 54 4a 53 41 |++) * 3 |+ GETJSA|
|000020f0| 4d 50 4c 45 28 2a 69 6e | 70 74 72 31 2b 2b 29 3b |MPLE(*in|ptr1++);|
|00002100| 0a 58 20 20 20 20 20 20 | 2a 6f 75 74 70 74 72 2b |.X |*outptr+|
|00002110| 2b 20 3d 20 28 4a 53 41 | 4d 50 4c 45 29 20 28 28 |+ = (JSA|MPLE) ((|
|00002120| 74 68 69 73 63 6f 6c 73 | 75 6d 20 2a 20 34 20 2b |thiscols|um * 4 +|
|00002130| 20 38 29 20 3e 3e 20 34 | 29 3b 0a 58 20 20 20 20 | 8) >> 4|);.X |
|00002140| 20 20 2a 6f 75 74 70 74 | 72 2b 2b 20 3d 20 28 4a | *outpt|r++ = (J|
|00002150| 53 41 4d 50 4c 45 29 20 | 28 28 74 68 69 73 63 6f |SAMPLE) |((thisco|
|00002160| 6c 73 75 6d 20 2a 20 33 | 20 2b 20 6e 65 78 74 63 |lsum * 3| + nextc|
|00002170| 6f 6c 73 75 6d 20 2b 20 | 38 29 20 3e 3e 20 34 29 |olsum + |8) >> 4)|
|00002180| 3b 0a 58 20 20 20 20 20 | 20 6c 61 73 74 63 6f 6c |;.X | lastcol|
|00002190| 73 75 6d 20 3d 20 74 68 | 69 73 63 6f 6c 73 75 6d |sum = th|iscolsum|
|000021a0| 3b 20 74 68 69 73 63 6f | 6c 73 75 6d 20 3d 20 6e |; thisco|lsum = n|
|000021b0| 65 78 74 63 6f 6c 73 75 | 6d 3b 0a 58 0a 58 20 20 |extcolsu|m;.X.X |
|000021c0| 20 20 20 20 66 6f 72 20 | 28 63 6f 6c 63 74 72 20 | for |(colctr |
|000021d0| 3d 20 69 6e 70 75 74 5f | 63 6f 6c 73 20 2d 20 32 |= input_|cols - 2|
|000021e0| 3b 20 63 6f 6c 63 74 72 | 20 3e 20 30 3b 20 63 6f |; colctr| > 0; co|
|000021f0| 6c 63 74 72 2d 2d 29 20 | 7b 0a 58 09 2f 2a 20 47 |lctr--) |{.X./* G|
|00002200| 65 6e 65 72 61 6c 20 63 | 61 73 65 3a 20 33 2f 34 |eneral c|ase: 3/4|
|00002210| 20 2a 20 6e 65 61 72 65 | 72 20 70 69 78 65 6c 20 | * neare|r pixel |
|00002220| 2b 20 31 2f 34 20 2a 20 | 66 75 72 74 68 65 72 20 |+ 1/4 * |further |
|00002230| 70 69 78 65 6c 20 69 6e | 20 65 61 63 68 20 2a 2f |pixel in| each */|
|00002240| 0a 58 09 2f 2a 20 64 69 | 6d 65 6e 73 69 6f 6e 2c |.X./* di|mension,|
|00002250| 20 74 68 75 73 20 39 2f | 31 36 2c 20 33 2f 31 36 | thus 9/|16, 3/16|
|00002260| 2c 20 33 2f 31 36 2c 20 | 31 2f 31 36 20 6f 76 65 |, 3/16, |1/16 ove|
|00002270| 72 61 6c 6c 20 2a 2f 0a | 58 09 6e 65 78 74 63 6f |rall */.|X.nextco|
|00002280| 6c 73 75 6d 20 3d 20 47 | 45 54 4a 53 41 4d 50 4c |lsum = G|ETJSAMPL|
|00002290| 45 28 2a 69 6e 70 74 72 | 30 2b 2b 29 20 2a 20 33 |E(*inptr|0++) * 3|
|000022a0| 20 2b 20 47 45 54 4a 53 | 41 4d 50 4c 45 28 2a 69 | + GETJS|AMPLE(*i|
|000022b0| 6e 70 74 72 31 2b 2b 29 | 3b 0a 58 09 2a 6f 75 74 |nptr1++)|;.X.*out|
|000022c0| 70 74 72 2b 2b 20 3d 20 | 28 4a 53 41 4d 50 4c 45 |ptr++ = |(JSAMPLE|
|000022d0| 29 20 28 28 74 68 69 73 | 63 6f 6c 73 75 6d 20 2a |) ((this|colsum *|
|000022e0| 20 33 20 2b 20 6c 61 73 | 74 63 6f 6c 73 75 6d 20 | 3 + las|tcolsum |
|000022f0| 2b 20 38 29 20 3e 3e 20 | 34 29 3b 0a 58 09 2a 6f |+ 8) >> |4);.X.*o|
|00002300| 75 74 70 74 72 2b 2b 20 | 3d 20 28 4a 53 41 4d 50 |utptr++ |= (JSAMP|
|00002310| 4c 45 29 20 28 28 74 68 | 69 73 63 6f 6c 73 75 6d |LE) ((th|iscolsum|
|00002320| 20 2a 20 33 20 2b 20 6e | 65 78 74 63 6f 6c 73 75 | * 3 + n|extcolsu|
|00002330| 6d 20 2b 20 38 29 20 3e | 3e 20 34 29 3b 0a 58 09 |m + 8) >|> 4);.X.|
|00002340| 6c 61 73 74 63 6f 6c 73 | 75 6d 20 3d 20 74 68 69 |lastcols|um = thi|
|00002350| 73 63 6f 6c 73 75 6d 3b | 20 74 68 69 73 63 6f 6c |scolsum;| thiscol|
|00002360| 73 75 6d 20 3d 20 6e 65 | 78 74 63 6f 6c 73 75 6d |sum = ne|xtcolsum|
|00002370| 3b 0a 58 20 20 20 20 20 | 20 7d 0a 58 0a 58 20 20 |;.X | }.X.X |
|00002380| 20 20 20 20 2f 2a 20 53 | 70 65 63 69 61 6c 20 63 | /* S|pecial c|
|00002390| 61 73 65 20 66 6f 72 20 | 6c 61 73 74 20 63 6f 6c |ase for |last col|
|000023a0| 75 6d 6e 20 2a 2f 0a 58 | 20 20 20 20 20 20 2a 6f |umn */.X| *o|
|000023b0| 75 74 70 74 72 2b 2b 20 | 3d 20 28 4a 53 41 4d 50 |utptr++ |= (JSAMP|
|000023c0| 4c 45 29 20 28 28 74 68 | 69 73 63 6f 6c 73 75 6d |LE) ((th|iscolsum|
|000023d0| 20 2a 20 33 20 2b 20 6c | 61 73 74 63 6f 6c 73 75 | * 3 + l|astcolsu|
|000023e0| 6d 20 2b 20 38 29 20 3e | 3e 20 34 29 3b 0a 58 20 |m + 8) >|> 4);.X |
|000023f0| 20 20 20 20 20 2a 6f 75 | 74 70 74 72 2b 2b 20 3d | *ou|tptr++ =|
|00002400| 20 28 4a 53 41 4d 50 4c | 45 29 20 28 28 74 68 69 | (JSAMPL|E) ((thi|
|00002410| 73 63 6f 6c 73 75 6d 20 | 2a 20 34 20 2b 20 38 29 |scolsum |* 4 + 8)|
|00002420| 20 3e 3e 20 34 29 3b 0a | 58 20 20 20 20 7d 0a 58 | >> 4);.|X }.X|
|00002430| 20 20 7d 0a 58 7d 0a 58 | 0a 58 0a 58 2f 2a 0a 58 | }.X}.X|.X.X/*.X|
|00002440| 20 2a 20 55 70 73 61 6d | 70 6c 65 20 70 69 78 65 | * Upsam|ple pixe|
|00002450| 6c 20 76 61 6c 75 65 73 | 20 6f 66 20 61 20 73 69 |l values| of a si|
|00002460| 6e 67 6c 65 20 63 6f 6d | 70 6f 6e 65 6e 74 2e 0a |ngle com|ponent..|
|00002470| 58 20 2a 20 54 68 69 73 | 20 76 65 72 73 69 6f 6e |X * This| version|
|00002480| 20 68 61 6e 64 6c 65 73 | 20 74 68 65 20 73 70 65 | handles| the spe|
|00002490| 63 69 61 6c 20 63 61 73 | 65 20 6f 66 20 61 20 66 |cial cas|e of a f|
|000024a0| 75 6c 6c 2d 73 69 7a 65 | 20 63 6f 6d 70 6f 6e 65 |ull-size| compone|
|000024b0| 6e 74 2e 0a 58 20 2a 2f | 0a 58 0a 58 4d 45 54 48 |nt..X */|.X.XMETH|
|000024c0| 4f 44 44 45 46 20 76 6f | 69 64 0a 58 66 75 6c 6c |ODDEF vo|id.Xfull|
|000024d0| 73 69 7a 65 5f 75 70 73 | 61 6d 70 6c 65 20 28 64 |size_ups|ample (d|
|000024e0| 65 63 6f 6d 70 72 65 73 | 73 5f 69 6e 66 6f 5f 70 |ecompres|s_info_p|
|000024f0| 74 72 20 63 69 6e 66 6f | 2c 20 69 6e 74 20 77 68 |tr cinfo|, int wh|
|00002500| 69 63 68 5f 63 6f 6d 70 | 6f 6e 65 6e 74 2c 0a 58 |ich_comp|onent,.X|
|00002510| 09 09 20 20 20 6c 6f 6e | 67 20 69 6e 70 75 74 5f |.. lon|g input_|
|00002520| 63 6f 6c 73 2c 20 69 6e | 74 20 69 6e 70 75 74 5f |cols, in|t input_|
|00002530| 72 6f 77 73 2c 0a 58 09 | 09 20 20 20 6c 6f 6e 67 |rows,.X.|. long|
|00002540| 20 6f 75 74 70 75 74 5f | 63 6f 6c 73 2c 20 69 6e | output_|cols, in|
|00002550| 74 20 6f 75 74 70 75 74 | 5f 72 6f 77 73 2c 0a 58 |t output|_rows,.X|
|00002560| 09 09 20 20 20 4a 53 41 | 4d 50 41 52 52 41 59 20 |.. JSA|MPARRAY |
|00002570| 61 62 6f 76 65 2c 20 4a | 53 41 4d 50 41 52 52 41 |above, J|SAMPARRA|
|00002580| 59 20 69 6e 70 75 74 5f | 64 61 74 61 2c 20 4a 53 |Y input_|data, JS|
|00002590| 41 4d 50 41 52 52 41 59 | 20 62 65 6c 6f 77 2c 0a |AMPARRAY| below,.|
|000025a0| 58 09 09 20 20 20 4a 53 | 41 4d 50 41 52 52 41 59 |X.. JS|AMPARRAY|
|000025b0| 20 6f 75 74 70 75 74 5f | 64 61 74 61 29 0a 58 7b | output_|data).X{|
|000025c0| 0a 58 23 69 66 64 65 66 | 20 44 45 42 55 47 09 09 |.X#ifdef| DEBUG..|
|000025d0| 09 2f 2a 20 66 6f 72 20 | 64 65 62 75 67 67 69 6e |./* for |debuggin|
|000025e0| 67 20 70 69 70 65 6c 69 | 6e 65 20 63 6f 6e 74 72 |g pipeli|ne contr|
|000025f0| 6f 6c 6c 65 72 20 2a 2f | 0a 58 20 20 69 66 20 28 |oller */|.X if (|
|00002600| 69 6e 70 75 74 5f 63 6f | 6c 73 20 21 3d 20 6f 75 |input_co|ls != ou|
|00002610| 74 70 75 74 5f 63 6f 6c | 73 20 7c 7c 20 69 6e 70 |tput_col|s || inp|
|00002620| 75 74 5f 72 6f 77 73 20 | 21 3d 20 6f 75 74 70 75 |ut_rows |!= outpu|
|00002630| 74 5f 72 6f 77 73 29 0a | 58 20 20 20 20 45 52 52 |t_rows).|X ERR|
|00002640| 45 58 49 54 28 63 69 6e | 66 6f 2d 3e 65 6d 65 74 |EXIT(cin|fo->emet|
|00002650| 68 6f 64 73 2c 20 22 50 | 69 70 65 6c 69 6e 65 20 |hods, "P|ipeline |
|00002660| 63 6f 6e 74 72 6f 6c 6c | 65 72 20 6d 65 73 73 65 |controll|er messe|
|00002670| 64 20 75 70 22 29 3b 0a | 58 23 65 6e 64 69 66 0a |d up");.|X#endif.|
|00002680| 58 0a 58 20 20 6a 63 6f | 70 79 5f 73 61 6d 70 6c |X.X jco|py_sampl|
|00002690| 65 5f 72 6f 77 73 28 69 | 6e 70 75 74 5f 64 61 74 |e_rows(i|nput_dat|
|000026a0| 61 2c 20 30 2c 20 6f 75 | 74 70 75 74 5f 64 61 74 |a, 0, ou|tput_dat|
|000026b0| 61 2c 20 30 2c 20 6f 75 | 74 70 75 74 5f 72 6f 77 |a, 0, ou|tput_row|
|000026c0| 73 2c 20 6f 75 74 70 75 | 74 5f 63 6f 6c 73 29 3b |s, outpu|t_cols);|
|000026d0| 0a 58 7d 0a 58 0a 58 0a | 58 0a 58 2f 2a 0a 58 20 |.X}.X.X.|X.X/*.X |
|000026e0| 2a 20 43 6c 65 61 6e 20 | 75 70 20 61 66 74 65 72 |* Clean |up after|
|000026f0| 20 61 20 73 63 61 6e 2e | 0a 58 20 2a 2f 0a 58 0a | a scan.|.X */.X.|
|00002700| 58 4d 45 54 48 4f 44 44 | 45 46 20 76 6f 69 64 0a |XMETHODD|EF void.|
|00002710| 58 75 70 73 61 6d 70 6c | 65 5f 74 65 72 6d 20 28 |Xupsampl|e_term (|
|00002720| 64 65 63 6f 6d 70 72 65 | 73 73 5f 69 6e 66 6f 5f |decompre|ss_info_|
|00002730| 70 74 72 20 63 69 6e 66 | 6f 29 0a 58 7b 0a 58 20 |ptr cinf|o).X{.X |
|00002740| 20 2f 2a 20 6e 6f 20 77 | 6f 72 6b 20 66 6f 72 20 | /* no w|ork for |
|00002750| 6e 6f 77 20 2a 2f 0a 58 | 7d 0a 58 0a 58 0a 58 0a |now */.X|}.X.X.X.|
|00002760| 58 2f 2a 0a 58 20 2a 20 | 54 68 65 20 6d 65 74 68 |X/*.X * |The meth|
|00002770| 6f 64 20 73 65 6c 65 63 | 74 69 6f 6e 20 72 6f 75 |od selec|tion rou|
|00002780| 74 69 6e 65 20 66 6f 72 | 20 75 70 73 61 6d 70 6c |tine for| upsampl|
|00002790| 69 6e 67 2e 0a 58 20 2a | 20 4e 6f 74 65 20 74 68 |ing..X *| Note th|
|000027a0| 61 74 20 77 65 20 6d 75 | 73 74 20 73 65 6c 65 63 |at we mu|st selec|
|000027b0| 74 20 61 20 72 6f 75 74 | 69 6e 65 20 66 6f 72 20 |t a rout|ine for |
|000027c0| 65 61 63 68 20 63 6f 6d | 70 6f 6e 65 6e 74 2e 0a |each com|ponent..|
|000027d0| 58 20 2a 2f 0a 58 0a 58 | 47 4c 4f 42 41 4c 20 76 |X */.X.X|GLOBAL v|
|000027e0| 6f 69 64 0a 58 6a 73 65 | 6c 75 70 73 61 6d 70 6c |oid.Xjse|lupsampl|
|000027f0| 65 20 28 64 65 63 6f 6d | 70 72 65 73 73 5f 69 6e |e (decom|press_in|
|00002800| 66 6f 5f 70 74 72 20 63 | 69 6e 66 6f 29 0a 58 7b |fo_ptr c|info).X{|
|00002810| 0a 58 20 20 73 68 6f 72 | 74 20 63 69 3b 0a 58 20 |.X shor|t ci;.X |
|00002820| 20 6a 70 65 67 5f 63 6f | 6d 70 6f 6e 65 6e 74 5f | jpeg_co|mponent_|
|00002830| 69 6e 66 6f 20 2a 20 63 | 6f 6d 70 70 74 72 3b 0a |info * c|ompptr;.|
|00002840| 58 0a 58 20 20 69 66 20 | 28 63 69 6e 66 6f 2d 3e |X.X if |(cinfo->|
|00002850| 43 43 49 52 36 30 31 5f | 73 61 6d 70 6c 69 6e 67 |CCIR601_|sampling|
|00002860| 29 0a 58 20 20 20 20 45 | 52 52 45 58 49 54 28 63 |).X E|RREXIT(c|
|00002870| 69 6e 66 6f 2d 3e 65 6d | 65 74 68 6f 64 73 2c 20 |info->em|ethods, |
|00002880| 22 43 43 49 52 36 30 31 | 20 75 70 73 61 6d 70 6c |"CCIR601| upsampl|
|00002890| 69 6e 67 20 6e 6f 74 20 | 69 6d 70 6c 65 6d 65 6e |ing not |implemen|
|000028a0| 74 65 64 20 79 65 74 22 | 29 3b 0a 58 0a 58 20 20 |ted yet"|);.X.X |
|000028b0| 66 6f 72 20 28 63 69 20 | 3d 20 30 3b 20 63 69 20 |for (ci |= 0; ci |
|000028c0| 3c 20 63 69 6e 66 6f 2d | 3e 63 6f 6d 70 73 5f 69 |< cinfo-|>comps_i|
|000028d0| 6e 5f 73 63 61 6e 3b 20 | 63 69 2b 2b 29 20 7b 0a |n_scan; |ci++) {.|
|000028e0| 58 20 20 20 20 63 6f 6d | 70 70 74 72 20 3d 20 63 |X com|pptr = c|
|000028f0| 69 6e 66 6f 2d 3e 63 75 | 72 5f 63 6f 6d 70 5f 69 |info->cu|r_comp_i|
|00002900| 6e 66 6f 5b 63 69 5d 3b | 0a 58 20 20 20 20 69 66 |nfo[ci];|.X if|
|00002910| 20 28 63 6f 6d 70 70 74 | 72 2d 3e 68 5f 73 61 6d | (comppt|r->h_sam|
|00002920| 70 5f 66 61 63 74 6f 72 | 20 3d 3d 20 63 69 6e 66 |p_factor| == cinf|
|00002930| 6f 2d 3e 6d 61 78 5f 68 | 5f 73 61 6d 70 5f 66 61 |o->max_h|_samp_fa|
|00002940| 63 74 6f 72 20 26 26 0a | 58 09 63 6f 6d 70 70 74 |ctor &&.|X.comppt|
|00002950| 72 2d 3e 76 5f 73 61 6d | 70 5f 66 61 63 74 6f 72 |r->v_sam|p_factor|
|00002960| 20 3d 3d 20 63 69 6e 66 | 6f 2d 3e 6d 61 78 5f 76 | == cinf|o->max_v|
|00002970| 5f 73 61 6d 70 5f 66 61 | 63 74 6f 72 29 0a 58 20 |_samp_fa|ctor).X |
|00002980| 20 20 20 20 20 63 69 6e | 66 6f 2d 3e 6d 65 74 68 | cin|fo->meth|
|00002990| 6f 64 73 2d 3e 75 70 73 | 61 6d 70 6c 65 5b 63 69 |ods->ups|ample[ci|
|000029a0| 5d 20 3d 20 66 75 6c 6c | 73 69 7a 65 5f 75 70 73 |] = full|size_ups|
|000029b0| 61 6d 70 6c 65 3b 0a 58 | 20 20 20 20 65 6c 73 65 |ample;.X| else|
|000029c0| 20 69 66 20 28 63 6f 6d | 70 70 74 72 2d 3e 68 5f | if (com|pptr->h_|
|000029d0| 73 61 6d 70 5f 66 61 63 | 74 6f 72 20 2a 20 32 20 |samp_fac|tor * 2 |
|000029e0| 3d 3d 20 63 69 6e 66 6f | 2d 3e 6d 61 78 5f 68 5f |== cinfo|->max_h_|
|000029f0| 73 61 6d 70 5f 66 61 63 | 74 6f 72 20 26 26 0a 58 |samp_fac|tor &&.X|
|00002a00| 09 20 20 20 20 20 63 6f | 6d 70 70 74 72 2d 3e 76 |. co|mpptr->v|
|00002a10| 5f 73 61 6d 70 5f 66 61 | 63 74 6f 72 20 3d 3d 20 |_samp_fa|ctor == |
|00002a20| 63 69 6e 66 6f 2d 3e 6d | 61 78 5f 76 5f 73 61 6d |cinfo->m|ax_v_sam|
|00002a30| 70 5f 66 61 63 74 6f 72 | 29 0a 58 20 20 20 20 20 |p_factor|).X |
|00002a40| 20 63 69 6e 66 6f 2d 3e | 6d 65 74 68 6f 64 73 2d | cinfo->|methods-|
|00002a50| 3e 75 70 73 61 6d 70 6c | 65 5b 63 69 5d 20 3d 20 |>upsampl|e[ci] = |
|00002a60| 68 32 76 31 5f 75 70 73 | 61 6d 70 6c 65 3b 0a 58 |h2v1_ups|ample;.X|
|00002a70| 20 20 20 20 65 6c 73 65 | 20 69 66 20 28 63 6f 6d | else| if (com|
|00002a80| 70 70 74 72 2d 3e 68 5f | 73 61 6d 70 5f 66 61 63 |pptr->h_|samp_fac|
|00002a90| 74 6f 72 20 2a 20 32 20 | 3d 3d 20 63 69 6e 66 6f |tor * 2 |== cinfo|
|00002aa0| 2d 3e 6d 61 78 5f 68 5f | 73 61 6d 70 5f 66 61 63 |->max_h_|samp_fac|
|00002ab0| 74 6f 72 20 26 26 0a 58 | 09 20 20 20 20 20 63 6f |tor &&.X|. co|
|00002ac0| 6d 70 70 74 72 2d 3e 76 | 5f 73 61 6d 70 5f 66 61 |mpptr->v|_samp_fa|
|00002ad0| 63 74 6f 72 20 2a 20 32 | 20 3d 3d 20 63 69 6e 66 |ctor * 2| == cinf|
|00002ae0| 6f 2d 3e 6d 61 78 5f 76 | 5f 73 61 6d 70 5f 66 61 |o->max_v|_samp_fa|
|00002af0| 63 74 6f 72 29 0a 58 20 | 20 20 20 20 20 63 69 6e |ctor).X | cin|
|00002b00| 66 6f 2d 3e 6d 65 74 68 | 6f 64 73 2d 3e 75 70 73 |fo->meth|ods->ups|
|00002b10| 61 6d 70 6c 65 5b 63 69 | 5d 20 3d 20 68 32 76 32 |ample[ci|] = h2v2|
|00002b20| 5f 75 70 73 61 6d 70 6c | 65 3b 0a 58 20 20 20 20 |_upsampl|e;.X |
|00002b30| 65 6c 73 65 20 69 66 20 | 28 28 63 69 6e 66 6f 2d |else if |((cinfo-|
|00002b40| 3e 6d 61 78 5f 68 5f 73 | 61 6d 70 5f 66 61 63 74 |>max_h_s|amp_fact|
|00002b50| 6f 72 20 25 20 63 6f 6d | 70 70 74 72 2d 3e 68 5f |or % com|pptr->h_|
|00002b60| 73 61 6d 70 5f 66 61 63 | 74 6f 72 29 20 3d 3d 20 |samp_fac|tor) == |
|00002b70| 30 20 26 26 0a 58 09 20 | 20 20 20 20 28 63 69 6e |0 &&.X. | (cin|
|00002b80| 66 6f 2d 3e 6d 61 78 5f | 76 5f 73 61 6d 70 5f 66 |fo->max_|v_samp_f|
|00002b90| 61 63 74 6f 72 20 25 20 | 63 6f 6d 70 70 74 72 2d |actor % |compptr-|
|00002ba0| 3e 76 5f 73 61 6d 70 5f | 66 61 63 74 6f 72 29 20 |>v_samp_|factor) |
|00002bb0| 3d 3d 20 30 29 0a 58 20 | 20 20 20 20 20 63 69 6e |== 0).X | cin|
|00002bc0| 66 6f 2d 3e 6d 65 74 68 | 6f 64 73 2d 3e 75 70 73 |fo->meth|ods->ups|
|00002bd0| 61 6d 70 6c 65 5b 63 69 | 5d 20 3d 20 69 6e 74 5f |ample[ci|] = int_|
|00002be0| 75 70 73 61 6d 70 6c 65 | 3b 0a 58 20 20 20 20 65 |upsample|;.X e|
|00002bf0| 6c 73 65 0a 58 20 20 20 | 20 20 20 45 52 52 45 58 |lse.X | ERREX|
|00002c00| 49 54 28 63 69 6e 66 6f | 2d 3e 65 6d 65 74 68 6f |IT(cinfo|->emetho|
|00002c10| 64 73 2c 20 22 46 72 61 | 63 74 69 6f 6e 61 6c 20 |ds, "Fra|ctional |
|00002c20| 75 70 73 61 6d 70 6c 69 | 6e 67 20 6e 6f 74 20 69 |upsampli|ng not i|
|00002c30| 6d 70 6c 65 6d 65 6e 74 | 65 64 20 79 65 74 22 29 |mplement|ed yet")|
|00002c40| 3b 0a 58 20 20 7d 0a 58 | 0a 58 20 20 63 69 6e 66 |;.X }.X|.X cinf|
|00002c50| 6f 2d 3e 6d 65 74 68 6f | 64 73 2d 3e 75 70 73 61 |o->metho|ds->upsa|
|00002c60| 6d 70 6c 65 5f 69 6e 69 | 74 20 3d 20 75 70 73 61 |mple_ini|t = upsa|
|00002c70| 6d 70 6c 65 5f 69 6e 69 | 74 3b 0a 58 20 20 63 69 |mple_ini|t;.X ci|
|00002c80| 6e 66 6f 2d 3e 6d 65 74 | 68 6f 64 73 2d 3e 75 70 |nfo->met|hods->up|
|00002c90| 73 61 6d 70 6c 65 5f 74 | 65 72 6d 20 3d 20 75 70 |sample_t|erm = up|
|00002ca0| 73 61 6d 70 6c 65 5f 74 | 65 72 6d 3b 0a 58 7d 0a |sample_t|erm;.X}.|
|00002cb0| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 0a 20 20 69 66 |END_OF_F|ILE. if|
|00002cc0| 20 74 65 73 74 20 39 36 | 36 35 20 2d 6e 65 20 60 | test 96|65 -ne `|
|00002cd0| 77 63 20 2d 63 20 3c 27 | 6a 64 73 61 6d 70 6c 65 |wc -c <'|jdsample|
|00002ce0| 2e 63 27 60 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |.c'`; th|en. e|
|00002cf0| 63 68 6f 20 73 68 61 72 | 3a 20 5c 22 27 6a 64 73 |cho shar|: \"'jds|
|00002d00| 61 6d 70 6c 65 2e 63 27 | 5c 22 20 75 6e 70 61 63 |ample.c'|\" unpac|
|00002d10| 6b 65 64 20 77 69 74 68 | 20 77 72 6f 6e 67 20 73 |ked with| wrong s|
|00002d20| 69 7a 65 21 0a 20 20 66 | 69 0a 20 20 23 20 65 6e |ize!. f|i. # en|
|00002d30| 64 20 6f 66 20 27 6a 64 | 73 61 6d 70 6c 65 2e 63 |d of 'jd|sample.c|
|00002d40| 27 0a 66 69 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |'.fi.if |test -f |
|00002d50| 27 6a 72 64 6a 66 69 66 | 2e 63 27 20 2d 61 20 22 |'jrdjfif|.c' -a "|
|00002d60| 24 7b 31 7d 22 20 21 3d | 20 22 2d 63 22 20 3b 20 |${1}" !=| "-c" ; |
|00002d70| 74 68 65 6e 20 0a 20 20 | 65 63 68 6f 20 73 68 61 |then . |echo sha|
|00002d80| 72 3a 20 57 69 6c 6c 20 | 6e 6f 74 20 63 6c 6f 62 |r: Will |not clob|
|00002d90| 62 65 72 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ber exis|ting fil|
|00002da0| 65 20 5c 22 27 6a 72 64 | 6a 66 69 66 2e 63 27 5c |e \"'jrd|jfif.c'\|
|00002db0| 22 0a 65 6c 73 65 0a 20 | 20 65 63 68 6f 20 73 68 |".else. | echo sh|
|00002dc0| 61 72 3a 20 45 78 74 72 | 61 63 74 69 6e 67 20 5c |ar: Extr|acting \|
|00002dd0| 22 27 6a 72 64 6a 66 69 | 66 2e 63 27 5c 22 20 5c |"'jrdjfi|f.c'\" \|
|00002de0| 28 32 33 33 31 33 20 63 | 68 61 72 61 63 74 65 72 |(23313 c|haracter|
|00002df0| 73 5c 29 0a 20 20 73 65 | 64 20 22 73 2f 5e 58 2f |s\). se|d "s/^X/|
|00002e00| 2f 22 20 3e 27 6a 72 64 | 6a 66 69 66 2e 63 27 20 |/" >'jrd|jfif.c' |
|00002e10| 3c 3c 27 45 4e 44 5f 4f | 46 5f 46 49 4c 45 27 0a |<<'END_O|F_FILE'.|
|00002e20| 58 2f 2a 0a 58 20 2a 20 | 6a 72 64 6a 66 69 66 2e |X/*.X * |jrdjfif.|
|00002e30| 63 0a 58 20 2a 0a 58 20 | 2a 20 43 6f 70 79 72 69 |c.X *.X |* Copyri|
|00002e40| 67 68 74 20 28 43 29 20 | 31 39 39 31 2c 20 31 39 |ght (C) |1991, 19|
|00002e50| 39 32 2c 20 54 68 6f 6d | 61 73 20 47 2e 20 4c 61 |92, Thom|as G. La|
|00002e60| 6e 65 2e 0a 58 20 2a 20 | 54 68 69 73 20 66 69 6c |ne..X * |This fil|
|00002e70| 65 20 69 73 20 70 61 72 | 74 20 6f 66 20 74 68 65 |e is par|t of the|
|00002e80| 20 49 6e 64 65 70 65 6e | 64 65 6e 74 20 4a 50 45 | Indepen|dent JPE|
|00002e90| 47 20 47 72 6f 75 70 27 | 73 20 73 6f 66 74 77 61 |G Group'|s softwa|
|00002ea0| 72 65 2e 0a 58 20 2a 20 | 46 6f 72 20 63 6f 6e 64 |re..X * |For cond|
|00002eb0| 69 74 69 6f 6e 73 20 6f | 66 20 64 69 73 74 72 69 |itions o|f distri|
|00002ec0| 62 75 74 69 6f 6e 20 61 | 6e 64 20 75 73 65 2c 20 |bution a|nd use, |
|00002ed0| 73 65 65 20 74 68 65 20 | 61 63 63 6f 6d 70 61 6e |see the |accompan|
|00002ee0| 79 69 6e 67 20 52 45 41 | 44 4d 45 20 66 69 6c 65 |ying REA|DME file|
|00002ef0| 2e 0a 58 20 2a 0a 58 20 | 2a 20 54 68 69 73 20 66 |..X *.X |* This f|
|00002f00| 69 6c 65 20 63 6f 6e 74 | 61 69 6e 73 20 72 6f 75 |ile cont|ains rou|
|00002f10| 74 69 6e 65 73 20 74 6f | 20 64 65 63 6f 64 65 20 |tines to| decode |
|00002f20| 73 74 61 6e 64 61 72 64 | 20 4a 50 45 47 20 66 69 |standard| JPEG fi|
|00002f30| 6c 65 20 68 65 61 64 65 | 72 73 2f 6d 61 72 6b 65 |le heade|rs/marke|
|00002f40| 72 73 2e 0a 58 20 2a 20 | 54 68 69 73 20 63 6f 64 |rs..X * |This cod|
|00002f50| 65 20 77 69 6c 6c 20 68 | 61 6e 64 6c 65 20 22 72 |e will h|andle "r|
|00002f60| 61 77 20 4a 50 45 47 22 | 20 61 6e 64 20 4a 46 49 |aw JPEG"| and JFI|
|00002f70| 46 2d 63 6f 6e 76 65 6e | 74 69 6f 6e 20 4a 50 45 |F-conven|tion JPE|
|00002f80| 47 20 66 69 6c 65 73 2e | 0a 58 20 2a 0a 58 20 2a |G files.|.X *.X *|
|00002f90| 20 59 6f 75 20 63 61 6e | 20 61 6c 73 6f 20 75 73 | You can| also us|
|00002fa0| 65 20 74 68 69 73 20 6d | 6f 64 75 6c 65 20 74 6f |e this m|odule to|
|00002fb0| 20 64 65 63 6f 64 65 20 | 61 20 72 61 77 2d 4a 50 | decode |a raw-JP|
|00002fc0| 45 47 20 6f 72 20 4a 46 | 49 46 2d 73 74 61 6e 64 |EG or JF|IF-stand|
|00002fd0| 61 72 64 20 64 61 74 61 | 0a 58 20 2a 20 73 74 72 |ard data|.X * str|
|00002fe0| 65 61 6d 20 74 68 61 74 | 20 69 73 20 65 6d 62 65 |eam that| is embe|
|00002ff0| 64 64 65 64 20 77 69 74 | 68 69 6e 20 61 20 6c 61 |dded wit|hin a la|
|00003000| 72 67 65 72 20 66 69 6c | 65 2e 20 20 54 6f 20 64 |rger fil|e. To d|
|00003010| 6f 20 74 68 61 74 2c 20 | 79 6f 75 20 6d 75 73 74 |o that, |you must|
|00003020| 0a 58 20 2a 20 70 6f 73 | 69 74 69 6f 6e 20 74 68 |.X * pos|ition th|
|00003030| 65 20 66 69 6c 65 20 74 | 6f 20 74 68 65 20 4a 50 |e file t|o the JP|
|00003040| 45 47 20 53 4f 49 20 6d | 61 72 6b 65 72 20 28 30 |EG SOI m|arker (0|
|00003050| 78 46 46 2f 30 78 44 38 | 29 20 74 68 61 74 20 62 |xFF/0xD8|) that b|
|00003060| 65 67 69 6e 73 20 74 68 | 65 0a 58 20 2a 20 64 61 |egins th|e.X * da|
|00003070| 74 61 20 73 65 71 75 65 | 6e 63 65 20 74 6f 20 62 |ta seque|nce to b|
|00003080| 65 20 64 65 63 6f 64 65 | 64 2e 20 20 49 66 20 6e |e decode|d. If n|
|00003090| 6f 74 68 69 6e 67 20 62 | 65 74 74 65 72 20 69 73 |othing b|etter is|
|000030a0| 20 70 6f 73 73 69 62 6c | 65 2c 20 79 6f 75 20 63 | possibl|e, you c|
|000030b0| 61 6e 20 73 63 61 6e 0a | 58 20 2a 20 74 68 65 20 |an scan.|X * the |
|000030c0| 66 69 6c 65 20 75 6e 74 | 69 6c 20 79 6f 75 20 73 |file unt|il you s|
|000030d0| 65 65 20 74 68 65 20 53 | 4f 49 20 6d 61 72 6b 65 |ee the S|OI marke|
|000030e0| 72 2c 20 74 68 65 6e 20 | 75 73 65 20 4a 55 4e 47 |r, then |use JUNG|
|000030f0| 45 54 43 20 74 6f 20 70 | 75 73 68 20 69 74 20 62 |ETC to p|ush it b|
|00003100| 61 63 6b 2e 0a 58 20 2a | 0a 58 20 2a 20 54 68 69 |ack..X *|.X * Thi|
|00003110| 73 20 6d 6f 64 75 6c 65 | 20 72 65 6c 69 65 73 20 |s module| relies |
|00003120| 6f 6e 20 74 68 65 20 4a | 47 45 54 43 20 6d 61 63 |on the J|GETC mac|
|00003130| 72 6f 20 61 6e 64 20 74 | 68 65 20 72 65 61 64 5f |ro and t|he read_|
|00003140| 6a 70 65 67 5f 64 61 74 | 61 20 6d 65 74 68 6f 64 |jpeg_dat|a method|
|00003150| 20 28 77 68 69 63 68 0a | 58 20 2a 20 69 73 20 70 | (which.|X * is p|
|00003160| 72 6f 76 69 64 65 64 20 | 62 79 20 74 68 65 20 75 |rovided |by the u|
|00003170| 73 65 72 20 69 6e 74 65 | 72 66 61 63 65 29 20 74 |ser inte|rface) t|
|00003180| 6f 20 72 65 61 64 20 66 | 72 6f 6d 20 74 68 65 20 |o read f|rom the |
|00003190| 4a 50 45 47 20 64 61 74 | 61 20 73 74 72 65 61 6d |JPEG dat|a stream|
|000031a0| 2e 0a 58 20 2a 20 54 68 | 65 72 65 66 6f 72 65 2c |..X * Th|erefore,|
|000031b0| 20 74 68 69 73 20 6d 6f | 64 75 6c 65 20 69 73 20 | this mo|dule is |
|000031c0| 6e 6f 74 20 64 65 70 65 | 6e 64 65 6e 74 20 6f 6e |not depe|ndent on|
|000031d0| 20 61 6e 79 20 70 61 72 | 74 69 63 75 6c 61 72 20 | any par|ticular |
|000031e0| 61 73 73 75 6d 70 74 69 | 6f 6e 20 61 62 6f 75 74 |assumpti|on about|
|000031f0| 0a 58 20 2a 20 74 68 65 | 20 64 61 74 61 20 73 6f |.X * the| data so|
|00003200| 75 72 63 65 3b 20 69 74 | 20 6e 65 65 64 20 6e 6f |urce; it| need no|
|00003210| 74 20 62 65 20 61 20 73 | 74 64 69 6f 20 73 74 72 |t be a s|tdio str|
|00003220| 65 61 6d 20 61 74 20 61 | 6c 6c 2e 20 20 28 54 68 |eam at a|ll. (Th|
|00003230| 69 73 20 66 61 63 74 20 | 64 6f 65 73 0a 58 20 2a |is fact |does.X *|
|00003240| 20 4e 4f 54 20 63 61 72 | 72 79 20 6f 76 65 72 20 | NOT car|ry over |
|00003250| 74 6f 20 6d 6f 72 65 20 | 63 6f 6d 70 6c 65 78 20 |to more |complex |
|00003260| 4a 50 45 47 20 66 69 6c | 65 20 66 6f 72 6d 61 74 |JPEG fil|e format|
|00003270| 73 20 73 75 63 68 20 61 | 73 20 4a 50 45 47 2d 69 |s such a|s JPEG-i|
|00003280| 6e 2d 54 49 46 46 3b 0a | 58 20 2a 20 74 68 6f 73 |n-TIFF;.|X * thos|
|00003290| 65 20 66 6f 72 6d 61 74 | 20 63 6f 6e 74 72 6f 6c |e format| control|
|000032a0| 20 6d 6f 64 75 6c 65 73 | 20 6d 61 79 20 77 65 6c | modules| may wel|
|000032b0| 6c 20 6e 65 65 64 20 74 | 6f 20 61 73 73 75 6d 65 |l need t|o assume|
|000032c0| 20 73 74 64 69 6f 20 69 | 6e 70 75 74 2e 29 0a 58 | stdio i|nput.).X|
|000032d0| 20 2a 0a 58 20 2a 20 54 | 68 65 73 65 20 72 6f 75 | *.X * T|hese rou|
|000032e0| 74 69 6e 65 73 20 61 72 | 65 20 69 6e 76 6f 6b 65 |tines ar|e invoke|
|000032f0| 64 20 76 69 61 20 74 68 | 65 20 6d 65 74 68 6f 64 |d via th|e method|
|00003300| 73 20 72 65 61 64 5f 66 | 69 6c 65 5f 68 65 61 64 |s read_f|ile_head|
|00003310| 65 72 2c 0a 58 20 2a 20 | 72 65 61 64 5f 73 63 61 |er,.X * |read_sca|
|00003320| 6e 5f 68 65 61 64 65 72 | 2c 20 72 65 61 64 5f 6a |n_header|, read_j|
|00003330| 70 65 67 5f 64 61 74 61 | 2c 20 72 65 61 64 5f 73 |peg_data|, read_s|
|00003340| 63 61 6e 5f 74 72 61 69 | 6c 65 72 2c 20 61 6e 64 |can_trai|ler, and|
|00003350| 20 72 65 61 64 5f 66 69 | 6c 65 5f 74 72 61 69 6c | read_fi|le_trail|
|00003360| 65 72 2e 0a 58 20 2a 2f | 0a 58 0a 58 23 69 6e 63 |er..X */|.X.X#inc|
|00003370| 6c 75 64 65 20 22 6a 69 | 6e 63 6c 75 64 65 2e 68 |lude "ji|nclude.h|
|00003380| 22 0a 58 0a 58 23 69 66 | 64 65 66 20 4a 46 49 46 |".X.X#if|def JFIF|
|00003390| 5f 53 55 50 50 4f 52 54 | 45 44 0a 58 0a 58 0a 58 |_SUPPORT|ED.X.X.X|
|000033a0| 74 79 70 65 64 65 66 20 | 65 6e 75 6d 20 7b 09 09 |typedef |enum {..|
|000033b0| 09 2f 2a 20 4a 50 45 47 | 20 6d 61 72 6b 65 72 20 |./* JPEG| marker |
|000033c0| 63 6f 64 65 73 20 2a 2f | 0a 58 20 20 4d 5f 53 4f |codes */|.X M_SO|
|000033d0| 46 30 20 20 3d 20 30 78 | 63 30 2c 0a 58 20 20 4d |F0 = 0x|c0,.X M|
|000033e0| 5f 53 4f 46 31 20 20 3d | 20 30 78 63 31 2c 0a 58 |_SOF1 =| 0xc1,.X|
|000033f0| 20 20 4d 5f 53 4f 46 32 | 20 20 3d 20 30 78 63 32 | M_SOF2| = 0xc2|
|00003400| 2c 0a 58 20 20 4d 5f 53 | 4f 46 33 20 20 3d 20 30 |,.X M_S|OF3 = 0|
|00003410| 78 63 33 2c 0a 58 20 20 | 0a 58 20 20 4d 5f 53 4f |xc3,.X |.X M_SO|
|00003420| 46 35 20 20 3d 20 30 78 | 63 35 2c 0a 58 20 20 4d |F5 = 0x|c5,.X M|
|00003430| 5f 53 4f 46 36 20 20 3d | 20 30 78 63 36 2c 0a 58 |_SOF6 =| 0xc6,.X|
|00003440| 20 20 4d 5f 53 4f 46 37 | 20 20 3d 20 30 78 63 37 | M_SOF7| = 0xc7|
|00003450| 2c 0a 58 20 20 0a 58 20 | 20 4d 5f 4a 50 47 20 20 |,.X .X | M_JPG |
|00003460| 20 3d 20 30 78 63 38 2c | 0a 58 20 20 4d 5f 53 4f | = 0xc8,|.X M_SO|
|00003470| 46 39 20 20 3d 20 30 78 | 63 39 2c 0a 58 20 20 4d |F9 = 0x|c9,.X M|
|00003480| 5f 53 4f 46 31 30 20 3d | 20 30 78 63 61 2c 0a 58 |_SOF10 =| 0xca,.X|
|00003490| 20 20 4d 5f 53 4f 46 31 | 31 20 3d 20 30 78 63 62 | M_SOF1|1 = 0xcb|
|000034a0| 2c 0a 58 20 20 0a 58 20 | 20 4d 5f 53 4f 46 31 33 |,.X .X | M_SOF13|
|000034b0| 20 3d 20 30 78 63 64 2c | 0a 58 20 20 4d 5f 53 4f | = 0xcd,|.X M_SO|
|000034c0| 46 31 34 20 3d 20 30 78 | 63 65 2c 0a 58 20 20 4d |F14 = 0x|ce,.X M|
|000034d0| 5f 53 4f 46 31 35 20 3d | 20 30 78 63 66 2c 0a 58 |_SOF15 =| 0xcf,.X|
|000034e0| 20 20 0a 58 20 20 4d 5f | 44 48 54 20 20 20 3d 20 | .X M_|DHT = |
|000034f0| 30 78 63 34 2c 0a 58 20 | 20 0a 58 20 20 4d 5f 44 |0xc4,.X | .X M_D|
|00003500| 41 43 20 20 20 3d 20 30 | 78 63 63 2c 0a 58 20 20 |AC = 0|xcc,.X |
|00003510| 0a 58 20 20 4d 5f 52 53 | 54 30 20 20 3d 20 30 78 |.X M_RS|T0 = 0x|
|00003520| 64 30 2c 0a 58 20 20 4d | 5f 52 53 54 31 20 20 3d |d0,.X M|_RST1 =|
|00003530| 20 30 78 64 31 2c 0a 58 | 20 20 4d 5f 52 53 54 32 | 0xd1,.X| M_RST2|
|00003540| 20 20 3d 20 30 78 64 32 | 2c 0a 58 20 20 4d 5f 52 | = 0xd2|,.X M_R|
|00003550| 53 54 33 20 20 3d 20 30 | 78 64 33 2c 0a 58 20 20 |ST3 = 0|xd3,.X |
|00003560| 4d 5f 52 53 54 34 20 20 | 3d 20 30 78 64 34 2c 0a |M_RST4 |= 0xd4,.|
|00003570| 58 20 20 4d 5f 52 53 54 | 35 20 20 3d 20 30 78 64 |X M_RST|5 = 0xd|
|00003580| 35 2c 0a 58 20 20 4d 5f | 52 53 54 36 20 20 3d 20 |5,.X M_|RST6 = |
|00003590| 30 78 64 36 2c 0a 58 20 | 20 4d 5f 52 53 54 37 20 |0xd6,.X | M_RST7 |
|000035a0| 20 3d 20 30 78 64 37 2c | 0a 58 20 20 0a 58 20 20 | = 0xd7,|.X .X |
|000035b0| 4d 5f 53 4f 49 20 20 20 | 3d 20 30 78 64 38 2c 0a |M_SOI |= 0xd8,.|
|000035c0| 58 20 20 4d 5f 45 4f 49 | 20 20 20 3d 20 30 78 64 |X M_EOI| = 0xd|
|000035d0| 39 2c 0a 58 20 20 4d 5f | 53 4f 53 20 20 20 3d 20 |9,.X M_|SOS = |
|000035e0| 30 78 64 61 2c 0a 58 20 | 20 4d 5f 44 51 54 20 20 |0xda,.X | M_DQT |
|000035f0| 20 3d 20 30 78 64 62 2c | 0a 58 20 20 4d 5f 44 4e | = 0xdb,|.X M_DN|
|00003600| 4c 20 20 20 3d 20 30 78 | 64 63 2c 0a 58 20 20 4d |L = 0x|dc,.X M|
|00003610| 5f 44 52 49 20 20 20 3d | 20 30 78 64 64 2c 0a 58 |_DRI =| 0xdd,.X|
|00003620| 20 20 4d 5f 44 48 50 20 | 20 20 3d 20 30 78 64 65 | M_DHP | = 0xde|
|00003630| 2c 0a 58 20 20 4d 5f 45 | 58 50 20 20 20 3d 20 30 |,.X M_E|XP = 0|
|00003640| 78 64 66 2c 0a 58 20 20 | 0a 58 20 20 4d 5f 41 50 |xdf,.X |.X M_AP|
|00003650| 50 30 20 20 3d 20 30 78 | 65 30 2c 0a 58 20 20 4d |P0 = 0x|e0,.X M|
|00003660| 5f 41 50 50 31 35 20 3d | 20 30 78 65 66 2c 0a 58 |_APP15 =| 0xef,.X|
|00003670| 20 20 0a 58 20 20 4d 5f | 4a 50 47 30 20 20 3d 20 | .X M_|JPG0 = |
|00003680| 30 78 66 30 2c 0a 58 20 | 20 4d 5f 4a 50 47 31 33 |0xf0,.X | M_JPG13|
|00003690| 20 3d 20 30 78 66 64 2c | 0a 58 20 20 4d 5f 43 4f | = 0xfd,|.X M_CO|
|000036a0| 4d 20 20 20 3d 20 30 78 | 66 65 2c 0a 58 20 20 0a |M = 0x|fe,.X .|
|000036b0| 58 20 20 4d 5f 54 45 4d | 20 20 20 3d 20 30 78 30 |X M_TEM| = 0x0|
|000036c0| 31 2c 0a 58 20 20 0a 58 | 20 20 4d 5f 45 52 52 4f |1,.X .X| M_ERRO|
|000036d0| 52 20 3d 20 30 78 31 30 | 30 0a 58 7d 20 4a 50 45 |R = 0x10|0.X} JPE|
|000036e0| 47 5f 4d 41 52 4b 45 52 | 3b 0a 58 0a 58 0a 58 2f |G_MARKER|;.X.X.X/|
|000036f0| 2a 0a 58 20 2a 20 52 65 | 6c 6f 61 64 20 74 68 65 |*.X * Re|load the|
|00003700| 20 69 6e 70 75 74 20 62 | 75 66 66 65 72 20 61 66 | input b|uffer af|
|00003710| 74 65 72 20 69 74 27 73 | 20 62 65 65 6e 20 65 6d |ter it's| been em|
|00003720| 70 74 69 65 64 2c 20 61 | 6e 64 20 72 65 74 75 72 |ptied, a|nd retur|
|00003730| 6e 20 74 68 65 20 6e 65 | 78 74 20 62 79 74 65 2e |n the ne|xt byte.|
|00003740| 0a 58 20 2a 20 54 68 69 | 73 20 69 73 20 65 78 70 |.X * Thi|s is exp|
|00003750| 6f 72 74 65 64 20 66 6f | 72 20 64 69 72 65 63 74 |orted fo|r direct|
|00003760| 20 75 73 65 20 62 79 20 | 74 68 65 20 65 6e 74 72 | use by |the entr|
|00003770| 6f 70 79 20 64 65 63 6f | 64 65 72 2e 0a 58 20 2a |opy deco|der..X *|
|00003780| 20 53 65 65 20 74 68 65 | 20 4a 47 45 54 43 20 6d | See the| JGETC m|
|00003790| 61 63 72 6f 20 66 6f 72 | 20 63 61 6c 6c 69 6e 67 |acro for| calling|
|000037a0| 20 63 6f 6e 64 69 74 69 | 6f 6e 73 2e 20 20 4e 6f | conditi|ons. No|
|000037b0| 74 65 20 69 6e 20 70 61 | 72 74 69 63 75 6c 61 72 |te in pa|rticular|
|000037c0| 20 74 68 61 74 0a 58 20 | 2a 20 72 65 61 64 5f 6a | that.X |* read_j|
|000037d0| 70 65 67 5f 64 61 74 61 | 20 6d 61 79 20 4e 4f 54 |peg_data| may NOT|
|000037e0| 20 72 65 74 75 72 6e 20 | 45 4f 46 2e 20 20 49 66 | return |EOF. If|
|000037f0| 20 6e 6f 20 6d 6f 72 65 | 20 64 61 74 61 20 69 73 | no more| data is|
|00003800| 20 61 76 61 69 6c 61 62 | 6c 65 2c 20 69 74 20 6d | availab|le, it m|
|00003810| 75 73 74 0a 58 20 2a 20 | 65 78 69 74 20 76 69 61 |ust.X * |exit via|
|00003820| 20 45 52 52 45 58 49 54 | 2c 20 6f 72 20 70 65 72 | ERREXIT|, or per|
|00003830| 68 61 70 73 20 73 79 6e | 74 68 65 73 69 7a 65 20 |haps syn|thesize |
|00003840| 66 61 6b 65 20 64 61 74 | 61 20 28 73 75 63 68 20 |fake dat|a (such |
|00003850| 61 73 20 61 6e 20 52 53 | 54 20 6d 61 72 6b 65 72 |as an RS|T marker|
|00003860| 29 2e 0a 58 20 2a 20 46 | 6f 72 20 65 72 72 6f 72 |)..X * F|or error|
|00003870| 20 72 65 63 6f 76 65 72 | 79 20 70 75 72 70 6f 73 | recover|y purpos|
|00003880| 65 73 2c 20 73 79 6e 74 | 68 65 73 69 7a 69 6e 67 |es, synt|hesizing|
|00003890| 20 61 6e 20 45 4f 49 20 | 6d 61 72 6b 65 72 20 69 | an EOI |marker i|
|000038a0| 73 20 70 72 6f 62 61 62 | 6c 79 20 62 65 73 74 2e |s probab|ly best.|
|000038b0| 0a 58 20 2a 0a 58 20 2a | 20 46 6f 72 20 74 68 69 |.X *.X *| For thi|
|000038c0| 73 20 68 65 61 64 65 72 | 20 63 6f 6e 74 72 6f 6c |s header| control|
|000038d0| 20 6d 6f 64 75 6c 65 2c | 20 72 65 61 64 5f 6a 70 | module,| read_jp|
|000038e0| 65 67 5f 64 61 74 61 20 | 69 73 20 73 75 70 70 6c |eg_data |is suppl|
|000038f0| 69 65 64 20 62 79 20 74 | 68 65 0a 58 20 2a 20 75 |ied by t|he.X * u|
|00003900| 73 65 72 20 69 6e 74 65 | 72 66 61 63 65 2e 20 20 |ser inte|rface. |
|00003910| 48 6f 77 65 76 65 72 2c | 20 68 65 61 64 65 72 20 |However,| header |
|00003920| 66 6f 72 6d 61 74 73 20 | 74 68 61 74 20 72 65 71 |formats |that req|
|00003930| 75 69 72 65 20 72 61 6e | 64 6f 6d 20 61 63 63 65 |uire ran|dom acce|
|00003940| 73 73 0a 58 20 2a 20 74 | 6f 20 74 68 65 20 69 6e |ss.X * t|o the in|
|00003950| 70 75 74 20 66 69 6c 65 | 20 77 6f 75 6c 64 20 6e |put file| would n|
|00003960| 65 65 64 20 74 6f 20 73 | 75 70 70 6c 79 20 74 68 |eed to s|upply th|
|00003970| 65 69 72 20 6f 77 6e 20 | 63 6f 64 65 2e 20 20 54 |eir own |code. T|
|00003980| 68 69 73 20 63 6f 64 65 | 20 69 73 0a 58 20 2a 20 |his code| is.X * |
|00003990| 6c 65 66 74 20 68 65 72 | 65 20 74 6f 20 69 6e 64 |left her|e to ind|
|000039a0| 69 63 61 74 65 20 77 68 | 61 74 20 69 73 20 72 65 |icate wh|at is re|
|000039b0| 71 75 69 72 65 64 2e 0a | 58 20 2a 2f 0a 58 0a 58 |quired..|X */.X.X|
|000039c0| 23 69 66 20 30 09 09 09 | 09 2f 2a 20 6e 6f 74 20 |#if 0...|./* not |
|000039d0| 6e 65 65 64 65 64 20 69 | 6e 20 74 68 69 73 20 6d |needed i|n this m|
|000039e0| 6f 64 75 6c 65 20 2a 2f | 0a 58 0a 58 4d 45 54 48 |odule */|.X.XMETH|
|000039f0| 4f 44 44 45 46 20 69 6e | 74 0a 58 72 65 61 64 5f |ODDEF in|t.Xread_|
|00003a00| 6a 70 65 67 5f 64 61 74 | 61 20 28 64 65 63 6f 6d |jpeg_dat|a (decom|
|00003a10| 70 72 65 73 73 5f 69 6e | 66 6f 5f 70 74 72 20 63 |press_in|fo_ptr c|
|00003a20| 69 6e 66 6f 29 0a 58 7b | 0a 58 20 20 63 69 6e 66 |info).X{|.X cinf|
|00003a30| 6f 2d 3e 6e 65 78 74 5f | 69 6e 70 75 74 5f 62 79 |o->next_|input_by|
|00003a40| 74 65 20 3d 20 63 69 6e | 66 6f 2d 3e 69 6e 70 75 |te = cin|fo->inpu|
|00003a50| 74 5f 62 75 66 66 65 72 | 20 2b 20 4d 49 4e 5f 55 |t_buffer| + MIN_U|
|00003a60| 4e 47 45 54 3b 0a 58 0a | 58 20 20 63 69 6e 66 6f |NGET;.X.|X cinfo|
|00003a70| 2d 3e 62 79 74 65 73 5f | 69 6e 5f 62 75 66 66 65 |->bytes_|in_buffe|
|00003a80| 72 20 3d 20 28 69 6e 74 | 29 20 4a 46 52 45 41 44 |r = (int|) JFREAD|
|00003a90| 28 63 69 6e 66 6f 2d 3e | 69 6e 70 75 74 5f 66 69 |(cinfo->|input_fi|
|00003aa0| 6c 65 2c 0a 58 09 09 09 | 09 09 63 69 6e 66 6f 2d |le,.X...|..cinfo-|
|00003ab0| 3e 6e 65 78 74 5f 69 6e | 70 75 74 5f 62 79 74 65 |>next_in|put_byte|
|00003ac0| 2c 0a 58 09 09 09 09 09 | 4a 50 45 47 5f 42 55 46 |,.X.....|JPEG_BUF|
|00003ad0| 5f 53 49 5a 45 29 3b 0a | 58 20 20 0a 58 20 20 69 |_SIZE);.|X .X i|
|00003ae0| 66 20 28 63 69 6e 66 6f | 2d 3e 62 79 74 65 73 5f |f (cinfo|->bytes_|
|00003af0| 69 6e 5f 62 75 66 66 65 | 72 20 3c 3d 20 30 29 20 |in_buffe|r <= 0) |
|00003b00| 7b 0a 58 20 20 20 20 57 | 41 52 4e 4d 53 28 63 69 |{.X W|ARNMS(ci|
|00003b10| 6e 66 6f 2d 3e 65 6d 65 | 74 68 6f 64 73 2c 20 22 |nfo->eme|thods, "|
|00003b20| 50 72 65 6d 61 74 75 72 | 65 20 45 4f 46 20 69 6e |Prematur|e EOF in|
|00003b30| 20 4a 50 45 47 20 66 69 | 6c 65 22 29 3b 0a 58 20 | JPEG fi|le");.X |
|00003b40| 20 20 20 63 69 6e 66 6f | 2d 3e 6e 65 78 74 5f 69 | cinfo|->next_i|
|00003b50| 6e 70 75 74 5f 62 79 74 | 65 5b 30 5d 20 3d 20 28 |nput_byt|e[0] = (|
|00003b60| 63 68 61 72 29 20 30 78 | 46 46 3b 0a 58 20 20 20 |char) 0x|FF;.X |
|00003b70| 20 63 69 6e 66 6f 2d 3e | 6e 65 78 74 5f 69 6e 70 | cinfo->|next_inp|
|00003b80| 75 74 5f 62 79 74 65 5b | 31 5d 20 3d 20 28 63 68 |ut_byte[|1] = (ch|
|00003b90| 61 72 29 20 4d 5f 45 4f | 49 3b 0a 58 20 20 20 20 |ar) M_EO|I;.X |
|00003ba0| 63 69 6e 66 6f 2d 3e 62 | 79 74 65 73 5f 69 6e 5f |cinfo->b|ytes_in_|
|00003bb0| 62 75 66 66 65 72 20 3d | 20 32 3b 0a 58 20 20 7d |buffer =| 2;.X }|
|00003bc0| 0a 58 0a 58 20 20 72 65 | 74 75 72 6e 20 4a 47 45 |.X.X re|turn JGE|
|00003bd0| 54 43 28 63 69 6e 66 6f | 29 3b 0a 58 7d 0a 58 0a |TC(cinfo|);.X}.X.|
|00003be0| 58 23 65 6e 64 69 66 0a | 58 0a 58 0a 58 2f 2a 0a |X#endif.|X.X.X/*.|
|00003bf0| 58 20 2a 20 52 6f 75 74 | 69 6e 65 73 20 74 6f 20 |X * Rout|ines to |
|00003c00| 70 61 72 73 65 20 4a 50 | 45 47 20 6d 61 72 6b 65 |parse JP|EG marke|
|00003c10| 72 73 20 26 20 73 61 76 | 65 20 61 77 61 79 20 74 |rs & sav|e away t|
|00003c20| 68 65 20 75 73 65 66 75 | 6c 20 69 6e 66 6f 2e 0a |he usefu|l info..|
|00003c30| 58 20 2a 2f 0a 58 0a 58 | 0a 58 4c 4f 43 41 4c 20 |X */.X.X|.XLOCAL |
|00003c40| 49 4e 54 33 32 0a 58 67 | 65 74 5f 32 62 79 74 65 |INT32.Xg|et_2byte|
|00003c50| 73 20 28 64 65 63 6f 6d | 70 72 65 73 73 5f 69 6e |s (decom|press_in|
|00003c60| 66 6f 5f 70 74 72 20 63 | 69 6e 66 6f 29 0a 58 2f |fo_ptr c|info).X/|
|00003c70| 2a 20 47 65 74 20 61 20 | 32 2d 62 79 74 65 20 75 |* Get a |2-byte u|
|00003c80| 6e 73 69 67 6e 65 64 20 | 69 6e 74 65 67 65 72 20 |nsigned |integer |
|00003c90| 28 65 2e 67 2e 2c 20 61 | 20 6d 61 72 6b 65 72 20 |(e.g., a| marker |
|00003ca0| 70 61 72 61 6d 65 74 65 | 72 20 6c 65 6e 67 74 68 |paramete|r length|
|00003cb0| 20 66 69 65 6c 64 29 20 | 2a 2f 0a 58 7b 0a 58 20 | field) |*/.X{.X |
|00003cc0| 20 49 4e 54 33 32 20 61 | 3b 0a 58 20 20 0a 58 20 | INT32 a|;.X .X |
|00003cd0| 20 61 20 3d 20 4a 47 45 | 54 43 28 63 69 6e 66 6f | a = JGE|TC(cinfo|
|00003ce0| 29 3b 0a 58 20 20 72 65 | 74 75 72 6e 20 28 61 20 |);.X re|turn (a |
|00003cf0| 3c 3c 20 38 29 20 2b 20 | 4a 47 45 54 43 28 63 69 |<< 8) + |JGETC(ci|
|00003d00| 6e 66 6f 29 3b 0a 58 7d | 0a 58 0a 58 0a 58 4c 4f |nfo);.X}|.X.X.XLO|
|00003d10| 43 41 4c 20 76 6f 69 64 | 0a 58 73 6b 69 70 5f 76 |CAL void|.Xskip_v|
|00003d20| 61 72 69 61 62 6c 65 20 | 28 64 65 63 6f 6d 70 72 |ariable |(decompr|
|00003d30| 65 73 73 5f 69 6e 66 6f | 5f 70 74 72 20 63 69 6e |ess_info|_ptr cin|
|00003d40| 66 6f 2c 20 69 6e 74 20 | 63 6f 64 65 29 0a 58 2f |fo, int |code).X/|
|00003d50| 2a 20 53 6b 69 70 20 6f | 76 65 72 20 61 6e 20 75 |* Skip o|ver an u|
|00003d60| 6e 6b 6e 6f 77 6e 20 6f | 72 20 75 6e 69 6e 74 65 |nknown o|r uninte|
|00003d70| 72 65 73 74 69 6e 67 20 | 76 61 72 69 61 62 6c 65 |resting |variable|
|00003d80| 2d 6c 65 6e 67 74 68 20 | 6d 61 72 6b 65 72 20 2a |-length |marker *|
|00003d90| 2f 0a 58 7b 0a 58 20 20 | 49 4e 54 33 32 20 6c 65 |/.X{.X |INT32 le|
|00003da0| 6e 67 74 68 3b 0a 58 20 | 20 0a 58 20 20 6c 65 6e |ngth;.X | .X len|
|00003db0| 67 74 68 20 3d 20 67 65 | 74 5f 32 62 79 74 65 73 |gth = ge|t_2bytes|
|00003dc0| 28 63 69 6e 66 6f 29 3b | 0a 58 20 20 0a 58 20 20 |(cinfo);|.X .X |
|00003dd0| 54 52 41 43 45 4d 53 32 | 28 63 69 6e 66 6f 2d 3e |TRACEMS2|(cinfo->|
|00003de0| 65 6d 65 74 68 6f 64 73 | 2c 20 31 2c 0a 58 09 20 |emethods|, 1,.X. |
|00003df0| 20 20 22 53 6b 69 70 70 | 69 6e 67 20 6d 61 72 6b | "Skipp|ing mark|
|00003e00| 65 72 20 30 78 25 30 32 | 78 2c 20 6c 65 6e 67 74 |er 0x%02|x, lengt|
|00003e10| 68 20 25 75 22 2c 20 63 | 6f 64 65 2c 20 28 69 6e |h %u", c|ode, (in|
|00003e20| 74 29 20 6c 65 6e 67 74 | 68 29 3b 0a 58 20 20 0a |t) lengt|h);.X .|
|00003e30| 58 20 20 66 6f 72 20 28 | 6c 65 6e 67 74 68 20 2d |X for (|length -|
|00003e40| 3d 20 32 3b 20 6c 65 6e | 67 74 68 20 3e 20 30 3b |= 2; len|gth > 0;|
|00003e50| 20 6c 65 6e 67 74 68 2d | 2d 29 0a 58 20 20 20 20 | length-|-).X |
|00003e60| 28 76 6f 69 64 29 20 4a | 47 45 54 43 28 63 69 6e |(void) J|GETC(cin|
|00003e70| 66 6f 29 3b 0a 58 7d 0a | 58 0a 58 0a 58 4c 4f 43 |fo);.X}.|X.X.XLOC|
|00003e80| 41 4c 20 76 6f 69 64 0a | 58 67 65 74 5f 64 68 74 |AL void.|Xget_dht|
|00003e90| 20 28 64 65 63 6f 6d 70 | 72 65 73 73 5f 69 6e 66 | (decomp|ress_inf|
|00003ea0| 6f 5f 70 74 72 20 63 69 | 6e 66 6f 29 0a 58 2f 2a |o_ptr ci|nfo).X/*|
|00003eb0| 20 50 72 6f 63 65 73 73 | 20 61 20 44 48 54 20 6d | Process| a DHT m|
|00003ec0| 61 72 6b 65 72 20 2a 2f | 0a 58 7b 0a 58 20 20 49 |arker */|.X{.X I|
|00003ed0| 4e 54 33 32 20 6c 65 6e | 67 74 68 3b 0a 58 20 20 |NT32 len|gth;.X |
|00003ee0| 55 49 4e 54 38 20 62 69 | 74 73 5b 31 37 5d 3b 0a |UINT8 bi|ts[17];.|
|00003ef0| 58 20 20 55 49 4e 54 38 | 20 68 75 66 66 76 61 6c |X UINT8| huffval|
|00003f00| 5b 32 35 36 5d 3b 0a 58 | 20 20 69 6e 74 20 69 2c |[256];.X| int i,|
|00003f10| 20 69 6e 64 65 78 2c 20 | 63 6f 75 6e 74 3b 0a 58 | index, |count;.X|
|00003f20| 20 20 48 55 46 46 5f 54 | 42 4c 20 2a 2a 68 74 62 | HUFF_T|BL **htb|
|00003f30| 6c 70 74 72 3b 0a 58 20 | 20 0a 58 20 20 6c 65 6e |lptr;.X | .X len|
|00003f40| 67 74 68 20 3d 20 67 65 | 74 5f 32 62 79 74 65 73 |gth = ge|t_2bytes|
|00003f50| 28 63 69 6e 66 6f 29 2d | 32 3b 0a 58 20 20 0a 58 |(cinfo)-|2;.X .X|
|00003f60| 20 20 77 68 69 6c 65 20 | 28 6c 65 6e 67 74 68 20 | while |(length |
|00003f70| 3e 20 30 29 20 7b 0a 58 | 20 20 20 20 69 6e 64 65 |> 0) {.X| inde|
|00003f80| 78 20 3d 20 4a 47 45 54 | 43 28 63 69 6e 66 6f 29 |x = JGET|C(cinfo)|
|00003f90| 3b 0a 58 0a 58 20 20 20 | 20 54 52 41 43 45 4d 53 |;.X.X | TRACEMS|
|00003fa0| 31 28 63 69 6e 66 6f 2d | 3e 65 6d 65 74 68 6f 64 |1(cinfo-|>emethod|
|00003fb0| 73 2c 20 31 2c 20 22 44 | 65 66 69 6e 65 20 48 75 |s, 1, "D|efine Hu|
|00003fc0| 66 66 6d 61 6e 20 54 61 | 62 6c 65 20 30 78 25 30 |ffman Ta|ble 0x%0|
|00003fd0| 32 78 22 2c 20 69 6e 64 | 65 78 29 3b 0a 58 20 20 |2x", ind|ex);.X |
|00003fe0| 20 20 20 20 0a 58 20 20 | 20 20 62 69 74 73 5b 30 | .X | bits[0|
|00003ff0| 5d 20 3d 20 30 3b 0a 58 | 20 20 20 20 63 6f 75 6e |] = 0;.X| coun|
|00004000| 74 20 3d 20 30 3b 0a 58 | 20 20 20 20 66 6f 72 20 |t = 0;.X| for |
|00004010| 28 69 20 3d 20 31 3b 20 | 69 20 3c 3d 20 31 36 3b |(i = 1; |i <= 16;|
|00004020| 20 69 2b 2b 29 20 7b 0a | 58 20 20 20 20 20 20 62 | i++) {.|X b|
|00004030| 69 74 73 5b 69 5d 20 3d | 20 28 55 49 4e 54 38 29 |its[i] =| (UINT8)|
|00004040| 20 4a 47 45 54 43 28 63 | 69 6e 66 6f 29 3b 0a 58 | JGETC(c|info);.X|
|00004050| 20 20 20 20 20 20 63 6f | 75 6e 74 20 2b 3d 20 62 | co|unt += b|
|00004060| 69 74 73 5b 69 5d 3b 0a | 58 20 20 20 20 7d 0a 58 |its[i];.|X }.X|
|00004070| 0a 58 20 20 20 20 54 52 | 41 43 45 4d 53 38 28 63 |.X TR|ACEMS8(c|
|00004080| 69 6e 66 6f 2d 3e 65 6d | 65 74 68 6f 64 73 2c 20 |info->em|ethods, |
|00004090| 32 2c 20 22 20 20 20 20 | 20 20 20 20 25 33 64 20 |2, " | %3d |
|000040a0| 25 33 64 20 25 33 64 20 | 25 33 64 20 25 33 64 20 |%3d %3d |%3d %3d |
|000040b0| 25 33 64 20 25 33 64 20 | 25 33 64 22 2c 0a 58 09 |%3d %3d |%3d",.X.|
|000040c0| 20 20 20 20 20 62 69 74 | 73 5b 31 5d 2c 20 62 69 | bit|s[1], bi|
|000040d0| 74 73 5b 32 5d 2c 20 62 | 69 74 73 5b 33 5d 2c 20 |ts[2], b|its[3], |
|000040e0| 62 69 74 73 5b 34 5d 2c | 0a 58 09 20 20 20 20 20 |bits[4],|.X. |
|000040f0| 62 69 74 73 5b 35 5d 2c | 20 62 69 74 73 5b 36 5d |bits[5],| bits[6]|
|00004100| 2c 20 62 69 74 73 5b 37 | 5d 2c 20 62 69 74 73 5b |, bits[7|], bits[|
|00004110| 38 5d 29 3b 0a 58 20 20 | 20 20 54 52 41 43 45 4d |8]);.X | TRACEM|
|00004120| 53 38 28 63 69 6e 66 6f | 2d 3e 65 6d 65 74 68 6f |S8(cinfo|->emetho|
|00004130| 64 73 2c 20 32 2c 20 22 | 20 20 20 20 20 20 20 20 |ds, 2, "| |
|00004140| 25 33 64 20 25 33 64 20 | 25 33 64 20 25 33 64 20 |%3d %3d |%3d %3d |
|00004150| 25 33 64 20 25 33 64 20 | 25 33 64 20 25 33 64 22 |%3d %3d |%3d %3d"|
|00004160| 2c 0a 58 09 20 20 20 20 | 20 62 69 74 73 5b 39 5d |,.X. | bits[9]|
|00004170| 2c 20 62 69 74 73 5b 31 | 30 5d 2c 20 62 69 74 73 |, bits[1|0], bits|
|00004180| 5b 31 31 5d 2c 20 62 69 | 74 73 5b 31 32 5d 2c 0a |[11], bi|ts[12],.|
|00004190| 58 09 20 20 20 20 20 62 | 69 74 73 5b 31 33 5d 2c |X. b|its[13],|
|000041a0| 20 62 69 74 73 5b 31 34 | 5d 2c 20 62 69 74 73 5b | bits[14|], bits[|
|000041b0| 31 35 5d 2c 20 62 69 74 | 73 5b 31 36 5d 29 3b 0a |15], bit|s[16]);.|
|000041c0| 58 0a 58 20 20 20 20 69 | 66 20 28 63 6f 75 6e 74 |X.X i|f (count|
|000041d0| 20 3e 20 32 35 36 29 0a | 58 20 20 20 20 20 20 45 | > 256).|X E|
|000041e0| 52 52 45 58 49 54 28 63 | 69 6e 66 6f 2d 3e 65 6d |RREXIT(c|info->em|
|000041f0| 65 74 68 6f 64 73 2c 20 | 22 42 6f 67 75 73 20 44 |ethods, |"Bogus D|
|00004200| 48 54 20 63 6f 75 6e 74 | 73 22 29 3b 0a 58 0a 58 |HT count|s");.X.X|
|00004210| 20 20 20 20 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 | for |(i = 0; |
|00004220| 69 20 3c 20 63 6f 75 6e | 74 3b 20 69 2b 2b 29 0a |i < coun|t; i++).|
|00004230| 58 20 20 20 20 20 20 68 | 75 66 66 76 61 6c 5b 69 |X h|uffval[i|
|00004240| 5d 20 3d 20 28 55 49 4e | 54 38 29 20 4a 47 45 54 |] = (UIN|T8) JGET|
|00004250| 43 28 63 69 6e 66 6f 29 | 3b 0a 58 0a 58 20 20 20 |C(cinfo)|;.X.X |
|00004260| 20 6c 65 6e 67 74 68 20 | 2d 3d 20 31 20 2b 20 31 | length |-= 1 + 1|
|00004270| 36 20 2b 20 63 6f 75 6e | 74 3b 0a 58 0a 58 20 20 |6 + coun|t;.X.X |
|00004280| 20 20 69 66 20 28 69 6e | 64 65 78 20 26 20 30 78 | if (in|dex & 0x|
|00004290| 31 30 29 20 7b 09 09 2f | 2a 20 41 43 20 74 61 62 |10) {../|* AC tab|
|000042a0| 6c 65 20 64 65 66 69 6e | 69 74 69 6f 6e 20 2a 2f |le defin|ition */|
|000042b0| 0a 58 20 20 20 20 20 20 | 69 6e 64 65 78 20 2d 3d |.X |index -=|
|000042c0| 20 30 78 31 30 3b 0a 58 | 20 20 20 20 20 20 68 74 | 0x10;.X| ht|
|000042d0| 62 6c 70 74 72 20 3d 20 | 26 63 69 6e 66 6f 2d 3e |blptr = |&cinfo->|
|000042e0| 61 63 5f 68 75 66 66 5f | 74 62 6c 5f 70 74 72 73 |ac_huff_|tbl_ptrs|
|000042f0| 5b 69 6e 64 65 78 5d 3b | 0a 58 20 20 20 20 7d 20 |[index];|.X } |
|00004300| 65 6c 73 65 20 7b 09 09 | 09 2f 2a 20 44 43 20 74 |else {..|./* DC t|
|00004310| 61 62 6c 65 20 64 65 66 | 69 6e 69 74 69 6f 6e 20 |able def|inition |
|00004320| 2a 2f 0a 58 20 20 20 20 | 20 20 68 74 62 6c 70 74 |*/.X | htblpt|
|00004330| 72 20 3d 20 26 63 69 6e | 66 6f 2d 3e 64 63 5f 68 |r = &cin|fo->dc_h|
|00004340| 75 66 66 5f 74 62 6c 5f | 70 74 72 73 5b 69 6e 64 |uff_tbl_|ptrs[ind|
|00004350| 65 78 5d 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |ex];.X | }.X.X |
|00004360| 20 20 20 69 66 20 28 69 | 6e 64 65 78 20 3c 20 30 | if (i|ndex < 0|
|00004370| 20 7c 7c 20 69 6e 64 65 | 78 20 3e 3d 20 4e 55 4d | || inde|x >= NUM|
|00004380| 5f 48 55 46 46 5f 54 42 | 4c 53 29 0a 58 20 20 20 |_HUFF_TB|LS).X |
|00004390| 20 20 20 45 52 52 45 58 | 49 54 31 28 63 69 6e 66 | ERREX|IT1(cinf|
|000043a0| 6f 2d 3e 65 6d 65 74 68 | 6f 64 73 2c 20 22 42 6f |o->emeth|ods, "Bo|
|000043b0| 67 75 73 20 44 48 54 20 | 69 6e 64 65 78 20 25 64 |gus DHT |index %d|
|000043c0| 22 2c 20 69 6e 64 65 78 | 29 3b 0a 58 0a 58 20 20 |", index|);.X.X |
|000043d0| 20 20 69 66 20 28 2a 68 | 74 62 6c 70 74 72 20 3d | if (*h|tblptr =|
|000043e0| 3d 20 4e 55 4c 4c 29 0a | 58 20 20 20 20 20 20 2a |= NULL).|X *|
|000043f0| 68 74 62 6c 70 74 72 20 | 3d 20 28 48 55 46 46 5f |htblptr |= (HUFF_|
|00004400| 54 42 4c 20 2a 29 20 28 | 2a 63 69 6e 66 6f 2d 3e |TBL *) (|*cinfo->|
|00004410| 65 6d 65 74 68 6f 64 73 | 2d 3e 61 6c 6c 6f 63 5f |emethods|->alloc_|
|00004420| 73 6d 61 6c 6c 29 20 28 | 53 49 5a 45 4f 46 28 48 |small) (|SIZEOF(H|
|00004430| 55 46 46 5f 54 42 4c 29 | 29 3b 0a 58 20 20 0a 58 |UFF_TBL)|);.X .X|
|00004440| 20 20 20 20 4d 45 4d 43 | 4f 50 59 28 28 2a 68 74 | MEMC|OPY((*ht|
|00004450| 62 6c 70 74 72 29 2d 3e | 62 69 74 73 2c 20 62 69 |blptr)->|bits, bi|
|00004460| 74 73 2c 20 53 49 5a 45 | 4f 46 28 28 2a 68 74 62 |ts, SIZE|OF((*htb|
|00004470| 6c 70 74 72 29 2d 3e 62 | 69 74 73 29 29 3b 0a 58 |lptr)->b|its));.X|
|00004480| 20 20 20 20 4d 45 4d 43 | 4f 50 59 28 28 2a 68 74 | MEMC|OPY((*ht|
|00004490| 62 6c 70 74 72 29 2d 3e | 68 75 66 66 76 61 6c 2c |blptr)->|huffval,|
|000044a0| 20 68 75 66 66 76 61 6c | 2c 20 53 49 5a 45 4f 46 | huffval|, SIZEOF|
|000044b0| 28 28 2a 68 74 62 6c 70 | 74 72 29 2d 3e 68 75 66 |((*htblp|tr)->huf|
|000044c0| 66 76 61 6c 29 29 3b 0a | 58 20 20 20 20 7d 0a 58 |fval));.|X }.X|
|000044d0| 7d 0a 58 0a 58 0a 58 4c | 4f 43 41 4c 20 76 6f 69 |}.X.X.XL|OCAL voi|
|000044e0| 64 0a 58 67 65 74 5f 64 | 61 63 20 28 64 65 63 6f |d.Xget_d|ac (deco|
|000044f0| 6d 70 72 65 73 73 5f 69 | 6e 66 6f 5f 70 74 72 20 |mpress_i|nfo_ptr |
|00004500| 63 69 6e 66 6f 29 0a 58 | 2f 2a 20 50 72 6f 63 65 |cinfo).X|/* Proce|
|00004510| 73 73 20 61 20 44 41 43 | 20 6d 61 72 6b 65 72 20 |ss a DAC| marker |
|00004520| 2a 2f 0a 58 7b 0a 58 20 | 20 49 4e 54 33 32 20 6c |*/.X{.X | INT32 l|
|00004530| 65 6e 67 74 68 3b 0a 58 | 20 20 69 6e 74 20 69 6e |ength;.X| int in|
|00004540| 64 65 78 2c 20 76 61 6c | 3b 0a 58 0a 58 20 20 6c |dex, val|;.X.X l|
|00004550| 65 6e 67 74 68 20 3d 20 | 67 65 74 5f 32 62 79 74 |ength = |get_2byt|
|00004560| 65 73 28 63 69 6e 66 6f | 29 2d 32 3b 0a 58 20 20 |es(cinfo|)-2;.X |
|00004570| 0a 58 20 20 77 68 69 6c | 65 20 28 6c 65 6e 67 74 |.X whil|e (lengt|
|00004580| 68 20 3e 20 30 29 20 7b | 0a 58 20 20 20 20 69 6e |h > 0) {|.X in|
|00004590| 64 65 78 20 3d 20 4a 47 | 45 54 43 28 63 69 6e 66 |dex = JG|ETC(cinf|
|000045a0| 6f 29 3b 0a 58 20 20 20 | 20 76 61 6c 20 3d 20 4a |o);.X | val = J|
|000045b0| 47 45 54 43 28 63 69 6e | 66 6f 29 3b 0a 58 0a 58 |GETC(cin|fo);.X.X|
|000045c0| 20 20 20 20 54 52 41 43 | 45 4d 53 32 28 63 69 6e | TRAC|EMS2(cin|
|000045d0| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2c 20 31 2c |fo->emet|hods, 1,|
|000045e0| 0a 58 09 20 20 20 20 20 | 22 44 65 66 69 6e 65 20 |.X. |"Define |
|000045f0| 41 72 69 74 68 6d 65 74 | 69 63 20 54 61 62 6c 65 |Arithmet|ic Table|
|00004600| 20 30 78 25 30 32 78 3a | 20 30 78 25 30 32 78 22 | 0x%02x:| 0x%02x"|
|00004610| 2c 20 69 6e 64 65 78 2c | 20 76 61 6c 29 3b 0a 58 |, index,| val);.X|
|00004620| 0a 58 20 20 20 20 69 66 | 20 28 69 6e 64 65 78 20 |.X if| (index |
|00004630| 3c 20 30 20 7c 7c 20 69 | 6e 64 65 78 20 3e 3d 20 |< 0 || i|ndex >= |
|00004640| 28 32 2a 4e 55 4d 5f 41 | 52 49 54 48 5f 54 42 4c |(2*NUM_A|RITH_TBL|
|00004650| 53 29 29 0a 58 20 20 20 | 20 20 20 45 52 52 45 58 |S)).X | ERREX|
|00004660| 49 54 31 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |IT1(cinf|o->emeth|
|00004670| 6f 64 73 2c 20 22 42 6f | 67 75 73 20 44 41 43 20 |ods, "Bo|gus DAC |
|00004680| 69 6e 64 65 78 20 25 64 | 22 2c 20 69 6e 64 65 78 |index %d|", index|
|00004690| 29 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 69 6e |);.X.X | if (in|
|000046a0| 64 65 78 20 3e 3d 20 4e | 55 4d 5f 41 52 49 54 48 |dex >= N|UM_ARITH|
|000046b0| 5f 54 42 4c 53 29 20 7b | 20 2f 2a 20 64 65 66 69 |_TBLS) {| /* defi|
|000046c0| 6e 65 20 41 43 20 74 61 | 62 6c 65 20 2a 2f 0a 58 |ne AC ta|ble */.X|
|000046d0| 20 20 20 20 20 20 63 69 | 6e 66 6f 2d 3e 61 72 69 | ci|nfo->ari|
|000046e0| 74 68 5f 61 63 5f 4b 5b | 69 6e 64 65 78 2d 4e 55 |th_ac_K[|index-NU|
|000046f0| 4d 5f 41 52 49 54 48 5f | 54 42 4c 53 5d 20 3d 20 |M_ARITH_|TBLS] = |
|00004700| 28 55 49 4e 54 38 29 20 | 76 61 6c 3b 0a 58 20 20 |(UINT8) |val;.X |
|00004710| 20 20 7d 20 65 6c 73 65 | 20 7b 09 09 09 2f 2a 20 | } else| {.../* |
|00004720| 64 65 66 69 6e 65 20 44 | 43 20 74 61 62 6c 65 20 |define D|C table |
|00004730| 2a 2f 0a 58 20 20 20 20 | 20 20 63 69 6e 66 6f 2d |*/.X | cinfo-|
|00004740| 3e 61 72 69 74 68 5f 64 | 63 5f 4c 5b 69 6e 64 65 |>arith_d|c_L[inde|
|00004750| 78 5d 20 3d 20 28 55 49 | 4e 54 38 29 20 28 76 61 |x] = (UI|NT8) (va|
|00004760| 6c 20 26 20 30 78 30 46 | 29 3b 0a 58 20 20 20 20 |l & 0x0F|);.X |
|00004770| 20 20 63 69 6e 66 6f 2d | 3e 61 72 69 74 68 5f 64 | cinfo-|>arith_d|
|00004780| 63 5f 55 5b 69 6e 64 65 | 78 5d 20 3d 20 28 55 49 |c_U[inde|x] = (UI|
|00004790| 4e 54 38 29 20 28 76 61 | 6c 20 3e 3e 20 34 29 3b |NT8) (va|l >> 4);|
|000047a0| 0a 58 20 20 20 20 20 20 | 69 66 20 28 63 69 6e 66 |.X |if (cinf|
|000047b0| 6f 2d 3e 61 72 69 74 68 | 5f 64 63 5f 4c 5b 69 6e |o->arith|_dc_L[in|
|000047c0| 64 65 78 5d 20 3e 20 63 | 69 6e 66 6f 2d 3e 61 72 |dex] > c|info->ar|
|000047d0| 69 74 68 5f 64 63 5f 55 | 5b 69 6e 64 65 78 5d 29 |ith_dc_U|[index])|
|000047e0| 0a 58 09 45 52 52 45 58 | 49 54 31 28 63 69 6e 66 |.X.ERREX|IT1(cinf|
|000047f0| 6f 2d 3e 65 6d 65 74 68 | 6f 64 73 2c 20 22 42 6f |o->emeth|ods, "Bo|
|00004800| 67 75 73 20 44 41 43 20 | 76 61 6c 75 65 20 30 78 |gus DAC |value 0x|
|00004810| 25 78 22 2c 20 76 61 6c | 29 3b 0a 58 20 20 20 20 |%x", val|);.X |
|00004820| 7d 0a 58 0a 58 20 20 20 | 20 6c 65 6e 67 74 68 20 |}.X.X | length |
|00004830| 2d 3d 20 32 3b 0a 58 20 | 20 7d 0a 58 7d 0a 58 0a |-= 2;.X | }.X}.X.|
|00004840| 58 0a 58 4c 4f 43 41 4c | 20 76 6f 69 64 0a 58 67 |X.XLOCAL| void.Xg|
|00004850| 65 74 5f 64 71 74 20 28 | 64 65 63 6f 6d 70 72 65 |et_dqt (|decompre|
|00004860| 73 73 5f 69 6e 66 6f 5f | 70 74 72 20 63 69 6e 66 |ss_info_|ptr cinf|
|00004870| 6f 29 0a 58 2f 2a 20 50 | 72 6f 63 65 73 73 20 61 |o).X/* P|rocess a|
|00004880| 20 44 51 54 20 6d 61 72 | 6b 65 72 20 2a 2f 0a 58 | DQT mar|ker */.X|
|00004890| 7b 0a 58 20 20 49 4e 54 | 33 32 20 6c 65 6e 67 74 |{.X INT|32 lengt|
|000048a0| 68 3b 0a 58 20 20 69 6e | 74 20 6e 2c 20 69 2c 20 |h;.X in|t n, i, |
|000048b0| 70 72 65 63 3b 0a 58 20 | 20 55 49 4e 54 31 36 20 |prec;.X | UINT16 |
|000048c0| 74 6d 70 3b 0a 58 20 20 | 51 55 41 4e 54 5f 54 42 |tmp;.X |QUANT_TB|
|000048d0| 4c 5f 50 54 52 20 71 75 | 61 6e 74 5f 70 74 72 3b |L_PTR qu|ant_ptr;|
|000048e0| 0a 58 20 20 0a 58 20 20 | 6c 65 6e 67 74 68 20 3d |.X .X |length =|
|000048f0| 20 67 65 74 5f 32 62 79 | 74 65 73 28 63 69 6e 66 | get_2by|tes(cinf|
|00004900| 6f 29 20 2d 20 32 3b 0a | 58 20 20 0a 58 20 20 77 |o) - 2;.|X .X w|
|00004910| 68 69 6c 65 20 28 6c 65 | 6e 67 74 68 20 3e 20 30 |hile (le|ngth > 0|
|00004920| 29 20 7b 0a 58 20 20 20 | 20 6e 20 3d 20 4a 47 45 |) {.X | n = JGE|
|00004930| 54 43 28 63 69 6e 66 6f | 29 3b 0a 58 20 20 20 20 |TC(cinfo|);.X |
|00004940| 70 72 65 63 20 3d 20 6e | 20 3e 3e 20 34 3b 0a 58 |prec = n| >> 4;.X|
|00004950| 20 20 20 20 6e 20 26 3d | 20 30 78 30 46 3b 0a 58 | n &=| 0x0F;.X|
|00004960| 0a 58 20 20 20 20 54 52 | 41 43 45 4d 53 32 28 63 |.X TR|ACEMS2(c|
|00004970| 69 6e 66 6f 2d 3e 65 6d | 65 74 68 6f 64 73 2c 20 |info->em|ethods, |
|00004980| 31 2c 0a 58 09 20 20 20 | 20 20 22 44 65 66 69 6e |1,.X. | "Defin|
|00004990| 65 20 51 75 61 6e 74 69 | 7a 61 74 69 6f 6e 20 54 |e Quanti|zation T|
|000049a0| 61 62 6c 65 20 25 64 20 | 20 70 72 65 63 69 73 69 |able %d | precisi|
|000049b0| 6f 6e 20 25 64 22 2c 20 | 6e 2c 20 70 72 65 63 29 |on %d", |n, prec)|
|000049c0| 3b 0a 58 0a 58 20 20 20 | 20 69 66 20 28 6e 20 3e |;.X.X | if (n >|
|000049d0| 3d 20 4e 55 4d 5f 51 55 | 41 4e 54 5f 54 42 4c 53 |= NUM_QU|ANT_TBLS|
|000049e0| 29 0a 58 20 20 20 20 20 | 20 45 52 52 45 58 49 54 |).X | ERREXIT|
|000049f0| 31 28 63 69 6e 66 6f 2d | 3e 65 6d 65 74 68 6f 64 |1(cinfo-|>emethod|
|00004a00| 73 2c 20 22 42 6f 67 75 | 73 20 74 61 62 6c 65 20 |s, "Bogu|s table |
|00004a10| 6e 75 6d 62 65 72 20 25 | 64 22 2c 20 6e 29 3b 0a |number %|d", n);.|
|00004a20| 58 20 20 20 20 20 20 0a | 58 20 20 20 20 69 66 20 |X .|X if |
|00004a30| 28 63 69 6e 66 6f 2d 3e | 71 75 61 6e 74 5f 74 62 |(cinfo->|quant_tb|
|00004a40| 6c 5f 70 74 72 73 5b 6e | 5d 20 3d 3d 20 4e 55 4c |l_ptrs[n|] == NUL|
|00004a50| 4c 29 0a 58 20 20 20 20 | 20 20 63 69 6e 66 6f 2d |L).X | cinfo-|
|00004a60| 3e 71 75 61 6e 74 5f 74 | 62 6c 5f 70 74 72 73 5b |>quant_t|bl_ptrs[|
|00004a70| 6e 5d 20 3d 20 28 51 55 | 41 4e 54 5f 54 42 4c 5f |n] = (QU|ANT_TBL_|
|00004a80| 50 54 52 29 0a 58 09 28 | 2a 63 69 6e 66 6f 2d 3e |PTR).X.(|*cinfo->|
|00004a90| 65 6d 65 74 68 6f 64 73 | 2d 3e 61 6c 6c 6f 63 5f |emethods|->alloc_|
|00004aa0| 73 6d 61 6c 6c 29 20 28 | 53 49 5a 45 4f 46 28 51 |small) (|SIZEOF(Q|
|00004ab0| 55 41 4e 54 5f 54 42 4c | 29 29 3b 0a 58 20 20 20 |UANT_TBL|));.X |
|00004ac0| 20 71 75 61 6e 74 5f 70 | 74 72 20 3d 20 63 69 6e | quant_p|tr = cin|
|00004ad0| 66 6f 2d 3e 71 75 61 6e | 74 5f 74 62 6c 5f 70 74 |fo->quan|t_tbl_pt|
|00004ae0| 72 73 5b 6e 5d 3b 0a 58 | 0a 58 20 20 20 20 66 6f |rs[n];.X|.X fo|
|00004af0| 72 20 28 69 20 3d 20 30 | 3b 20 69 20 3c 20 44 43 |r (i = 0|; i < DC|
|00004b00| 54 53 49 5a 45 32 3b 20 | 69 2b 2b 29 20 7b 0a 58 |TSIZE2; |i++) {.X|
|00004b10| 20 20 20 20 20 20 74 6d | 70 20 3d 20 4a 47 45 54 | tm|p = JGET|
|00004b20| 43 28 63 69 6e 66 6f 29 | 3b 0a 58 20 20 20 20 20 |C(cinfo)|;.X |
|00004b30| 20 69 66 20 28 70 72 65 | 63 29 0a 58 09 74 6d 70 | if (pre|c).X.tmp|
|00004b40| 20 3d 20 28 74 6d 70 3c | 3c 38 29 20 2b 20 4a 47 | = (tmp<|<8) + JG|
|00004b50| 45 54 43 28 63 69 6e 66 | 6f 29 3b 0a 58 20 20 20 |ETC(cinf|o);.X |
|00004b60| 20 20 20 71 75 61 6e 74 | 5f 70 74 72 5b 69 5d 20 | quant|_ptr[i] |
|00004b70| 3d 20 74 6d 70 3b 0a 58 | 20 20 20 20 7d 0a 58 0a |= tmp;.X| }.X.|
|00004b80| 58 20 20 20 20 66 6f 72 | 20 28 69 20 3d 20 30 3b |X for| (i = 0;|
|00004b90| 20 69 20 3c 20 44 43 54 | 53 49 5a 45 32 3b 20 69 | i < DCT|SIZE2; i|
|00004ba0| 20 2b 3d 20 38 29 20 7b | 0a 58 20 20 20 20 20 20 | += 8) {|.X |
|00004bb0| 54 52 41 43 45 4d 53 38 | 28 63 69 6e 66 6f 2d 3e |TRACEMS8|(cinfo->|
|00004bc0| 65 6d 65 74 68 6f 64 73 | 2c 20 32 2c 20 22 20 20 |emethods|, 2, " |
|00004bd0| 20 20 20 20 20 20 25 34 | 75 20 25 34 75 20 25 34 | %4|u %4u %4|
|00004be0| 75 20 25 34 75 20 25 34 | 75 20 25 34 75 20 25 34 |u %4u %4|u %4u %4|
|00004bf0| 75 20 25 34 75 22 2c 0a | 58 09 20 20 20 20 20 20 |u %4u",.|X. |
|00004c00| 20 71 75 61 6e 74 5f 70 | 74 72 5b 69 20 20 5d 2c | quant_p|tr[i ],|
|00004c10| 20 71 75 61 6e 74 5f 70 | 74 72 5b 69 2b 31 5d 2c | quant_p|tr[i+1],|
|00004c20| 20 71 75 61 6e 74 5f 70 | 74 72 5b 69 2b 32 5d 2c | quant_p|tr[i+2],|
|00004c30| 20 71 75 61 6e 74 5f 70 | 74 72 5b 69 2b 33 5d 2c | quant_p|tr[i+3],|
|00004c40| 0a 58 09 20 20 20 20 20 | 20 20 71 75 61 6e 74 5f |.X. | quant_|
|00004c50| 70 74 72 5b 69 2b 34 5d | 2c 20 71 75 61 6e 74 5f |ptr[i+4]|, quant_|
|00004c60| 70 74 72 5b 69 2b 35 5d | 2c 20 71 75 61 6e 74 5f |ptr[i+5]|, quant_|
|00004c70| 70 74 72 5b 69 2b 36 5d | 2c 20 71 75 61 6e 74 5f |ptr[i+6]|, quant_|
|00004c80| 70 74 72 5b 69 2b 37 5d | 29 3b 0a 58 20 20 20 20 |ptr[i+7]|);.X |
|00004c90| 7d 0a 58 0a 58 20 20 20 | 20 6c 65 6e 67 74 68 20 |}.X.X | length |
|00004ca0| 2d 3d 20 44 43 54 53 49 | 5a 45 32 2b 31 3b 0a 58 |-= DCTSI|ZE2+1;.X|
|00004cb0| 20 20 20 20 69 66 20 28 | 70 72 65 63 29 20 6c 65 | if (|prec) le|
|00004cc0| 6e 67 74 68 20 2d 3d 20 | 44 43 54 53 49 5a 45 32 |ngth -= |DCTSIZE2|
|00004cd0| 3b 0a 58 20 20 7d 0a 58 | 7d 0a 58 0a 58 0a 58 4c |;.X }.X|}.X.X.XL|
|00004ce0| 4f 43 41 4c 20 76 6f 69 | 64 0a 58 67 65 74 5f 64 |OCAL voi|d.Xget_d|
|00004cf0| 72 69 20 28 64 65 63 6f | 6d 70 72 65 73 73 5f 69 |ri (deco|mpress_i|
|00004d00| 6e 66 6f 5f 70 74 72 20 | 63 69 6e 66 6f 29 0a 58 |nfo_ptr |cinfo).X|
|00004d10| 2f 2a 20 50 72 6f 63 65 | 73 73 20 61 20 44 52 49 |/* Proce|ss a DRI|
|00004d20| 20 6d 61 72 6b 65 72 20 | 2a 2f 0a 58 7b 0a 58 20 | marker |*/.X{.X |
|00004d30| 20 69 66 20 28 67 65 74 | 5f 32 62 79 74 65 73 28 | if (get|_2bytes(|
|00004d40| 63 69 6e 66 6f 29 20 21 | 3d 20 34 29 0a 58 20 20 |cinfo) !|= 4).X |
|00004d50| 20 20 45 52 52 45 58 49 | 54 28 63 69 6e 66 6f 2d | ERREXI|T(cinfo-|
|00004d60| 3e 65 6d 65 74 68 6f 64 | 73 2c 20 22 42 6f 67 75 |>emethod|s, "Bogu|
|00004d70| 73 20 6c 65 6e 67 74 68 | 20 69 6e 20 44 52 49 22 |s length| in DRI"|
|00004d80| 29 3b 0a 58 0a 58 20 20 | 63 69 6e 66 6f 2d 3e 72 |);.X.X |cinfo->r|
|00004d90| 65 73 74 61 72 74 5f 69 | 6e 74 65 72 76 61 6c 20 |estart_i|nterval |
|00004da0| 3d 20 28 55 49 4e 54 31 | 36 29 20 67 65 74 5f 32 |= (UINT1|6) get_2|
|00004db0| 62 79 74 65 73 28 63 69 | 6e 66 6f 29 3b 0a 58 0a |bytes(ci|nfo);.X.|
|00004dc0| 58 20 20 54 52 41 43 45 | 4d 53 31 28 63 69 6e 66 |X TRACE|MS1(cinf|
|00004dd0| 6f 2d 3e 65 6d 65 74 68 | 6f 64 73 2c 20 31 2c 0a |o->emeth|ods, 1,.|
|00004de0| 58 09 20 20 20 22 44 65 | 66 69 6e 65 20 52 65 73 |X. "De|fine Res|
|00004df0| 74 61 72 74 20 49 6e 74 | 65 72 76 61 6c 20 25 75 |tart Int|erval %u|
|00004e00| 22 2c 20 63 69 6e 66 6f | 2d 3e 72 65 73 74 61 72 |", cinfo|->restar|
|00004e10| 74 5f 69 6e 74 65 72 76 | 61 6c 29 3b 0a 58 7d 0a |t_interv|al);.X}.|
|00004e20| 58 0a 58 0a 58 4c 4f 43 | 41 4c 20 76 6f 69 64 0a |X.X.XLOC|AL void.|
|00004e30| 58 67 65 74 5f 61 70 70 | 30 20 28 64 65 63 6f 6d |Xget_app|0 (decom|
|00004e40| 70 72 65 73 73 5f 69 6e | 66 6f 5f 70 74 72 20 63 |press_in|fo_ptr c|
|00004e50| 69 6e 66 6f 29 0a 58 2f | 2a 20 50 72 6f 63 65 73 |info).X/|* Proces|
|00004e60| 73 20 61 6e 20 41 50 50 | 30 20 6d 61 72 6b 65 72 |s an APP|0 marker|
|00004e70| 20 2a 2f 0a 58 7b 0a 58 | 23 64 65 66 69 6e 65 20 | */.X{.X|#define |
|00004e80| 4a 46 49 46 5f 4c 45 4e | 20 31 34 0a 58 20 20 49 |JFIF_LEN| 14.X I|
|00004e90| 4e 54 33 32 20 6c 65 6e | 67 74 68 3b 0a 58 20 20 |NT32 len|gth;.X |
|00004ea0| 55 49 4e 54 38 20 62 5b | 4a 46 49 46 5f 4c 45 4e |UINT8 b[|JFIF_LEN|
|00004eb0| 5d 3b 0a 58 20 20 69 6e | 74 20 62 75 66 66 70 3b |];.X in|t buffp;|
|00004ec0| 0a 58 0a 58 20 20 6c 65 | 6e 67 74 68 20 3d 20 67 |.X.X le|ngth = g|
|00004ed0| 65 74 5f 32 62 79 74 65 | 73 28 63 69 6e 66 6f 29 |et_2byte|s(cinfo)|
|00004ee0| 20 2d 20 32 3b 0a 58 0a | 58 20 20 2f 2a 20 53 65 | - 2;.X.|X /* Se|
|00004ef0| 65 20 69 66 20 61 20 4a | 46 49 46 20 41 50 50 30 |e if a J|FIF APP0|
|00004f00| 20 6d 61 72 6b 65 72 20 | 69 73 20 70 72 65 73 65 | marker |is prese|
|00004f10| 6e 74 20 2a 2f 0a 58 0a | 58 20 20 69 66 20 28 6c |nt */.X.|X if (l|
|00004f20| 65 6e 67 74 68 20 3e 3d | 20 4a 46 49 46 5f 4c 45 |ength >=| JFIF_LE|
|00004f30| 4e 29 20 7b 0a 58 20 20 | 20 20 66 6f 72 20 28 62 |N) {.X | for (b|
|00004f40| 75 66 66 70 20 3d 20 30 | 3b 20 62 75 66 66 70 20 |uffp = 0|; buffp |
|00004f50| 3c 20 4a 46 49 46 5f 4c | 45 4e 3b 20 62 75 66 66 |< JFIF_L|EN; buff|
|00004f60| 70 2b 2b 29 0a 58 20 20 | 20 20 20 20 62 5b 62 75 |p++).X | b[bu|
|00004f70| 66 66 70 5d 20 3d 20 28 | 55 49 4e 54 38 29 20 4a |ffp] = (|UINT8) J|
|00004f80| 47 45 54 43 28 63 69 6e | 66 6f 29 3b 0a 58 20 20 |GETC(cin|fo);.X |
|00004f90| 20 20 6c 65 6e 67 74 68 | 20 2d 3d 20 4a 46 49 46 | length| -= JFIF|
|00004fa0| 5f 4c 45 4e 3b 0a 58 0a | 58 20 20 20 20 69 66 20 |_LEN;.X.|X if |
|00004fb0| 28 62 5b 30 5d 3d 3d 30 | 78 34 41 20 26 26 20 62 |(b[0]==0|x4A && b|
|00004fc0| 5b 31 5d 3d 3d 30 78 34 | 36 20 26 26 20 62 5b 32 |[1]==0x4|6 && b[2|
|00004fd0| 5d 3d 3d 30 78 34 39 20 | 26 26 20 62 5b 33 5d 3d |]==0x49 |&& b[3]=|
|00004fe0| 3d 30 78 34 36 20 26 26 | 20 62 5b 34 5d 3d 3d 30 |=0x46 &&| b[4]==0|
|00004ff0| 29 20 7b 0a 58 20 20 20 | 20 20 20 2f 2a 20 46 6f |) {.X | /* Fo|
|00005000| 75 6e 64 20 4a 46 49 46 | 20 41 50 50 30 20 6d 61 |und JFIF| APP0 ma|
|00005010| 72 6b 65 72 3a 20 63 68 | 65 63 6b 20 76 65 72 73 |rker: ch|eck vers|
|00005020| 69 6f 6e 20 2a 2f 0a 58 | 20 20 20 20 20 20 2f 2a |ion */.X| /*|
|00005030| 20 4d 61 6a 6f 72 20 76 | 65 72 73 69 6f 6e 20 6d | Major v|ersion m|
|00005040| 75 73 74 20 62 65 20 31 | 20 2a 2f 0a 58 20 20 20 |ust be 1| */.X |
|00005050| 20 20 20 69 66 20 28 62 | 5b 35 5d 20 21 3d 20 31 | if (b|[5] != 1|
|00005060| 29 0a 58 09 45 52 52 45 | 58 49 54 32 28 63 69 6e |).X.ERRE|XIT2(cin|
|00005070| 66 6f 2d 3e 65 6d 65 74 | 68 6f 64 73 2c 20 22 55 |fo->emet|hods, "U|
|00005080| 6e 73 75 70 70 6f 72 74 | 65 64 20 4a 46 49 46 20 |nsupport|ed JFIF |
|00005090| 72 65 76 69 73 69 6f 6e | 20 6e 75 6d 62 65 72 20 |revision| number |
|000050a0| 25 64 2e 25 30 32 64 22 | 2c 0a 58 09 09 20 62 5b |%d.%02d"|,.X.. b[|
|000050b0| 35 5d 2c 20 62 5b 36 5d | 29 3b 0a 58 20 20 20 20 |5], b[6]|);.X |
|000050c0| 20 20 2f 2a 20 4d 69 6e | 6f 72 20 76 65 72 73 69 | /* Min|or versi|
|000050d0| 6f 6e 20 73 68 6f 75 6c | 64 20 62 65 20 30 2e 2e |on shoul|d be 0..|
|000050e0| 32 2c 20 62 75 74 20 74 | 72 79 20 74 6f 20 70 72 |2, but t|ry to pr|
|000050f0| 6f 63 65 73 73 20 61 6e | 79 77 61 79 20 69 66 20 |ocess an|yway if |
|00005100| 6e 65 77 65 72 20 2a 2f | 0a 58 20 20 20 20 20 20 |newer */|.X |
|00005110| 69 66 20 28 62 5b 36 5d | 20 3e 20 32 29 0a 58 09 |if (b[6]| > 2).X.|
|00005120| 54 52 41 43 45 4d 53 32 | 28 63 69 6e 66 6f 2d 3e |TRACEMS2|(cinfo->|
|00005130| 65 6d 65 74 68 6f 64 73 | 2c 20 31 2c 20 22 57 61 |emethods|, 1, "Wa|
|00005140| 72 6e 69 6e 67 3a 20 75 | 6e 6b 6e 6f 77 6e 20 4a |rning: u|nknown J|
|00005150| 46 49 46 20 72 65 76 69 | 73 69 6f 6e 20 6e 75 6d |FIF revi|sion num|
|00005160| 62 65 72 20 25 64 2e 25 | 30 32 64 22 2c 0a 58 09 |ber %d.%|02d",.X.|
|00005170| 09 20 62 5b 35 5d 2c 20 | 62 5b 36 5d 29 3b 0a 58 |. b[5], |b[6]);.X|
|00005180| 20 20 20 20 20 20 2f 2a | 20 53 61 76 65 20 69 6e | /*| Save in|
|00005190| 66 6f 20 2a 2f 0a 58 20 | 20 20 20 20 20 63 69 6e |fo */.X | cin|
|000051a0| 66 6f 2d 3e 64 65 6e 73 | 69 74 79 5f 75 6e 69 74 |fo->dens|ity_unit|
|000051b0| 20 3d 20 62 5b 37 5d 3b | 0a 58 20 20 20 20 20 20 | = b[7];|.X |
|000051c0| 63 69 6e 66 6f 2d 3e 58 | 5f 64 65 6e 73 69 74 79 |cinfo->X|_density|
|000051d0| 20 3d 20 28 62 5b 38 5d | 20 3c 3c 20 38 29 20 2b | = (b[8]| << 8) +|
|000051e0| 20 62 5b 39 5d 3b 0a 58 | 20 20 20 20 20 20 63 69 | b[9];.X| ci|
|000051f0| 6e 66 6f 2d 3e 59 5f 64 | 65 6e 73 69 74 79 20 3d |nfo->Y_d|ensity =|
|00005200| 20 28 62 5b 31 30 5d 20 | 3c 3c 20 38 29 20 2b 20 | (b[10] |<< 8) + |
|00005210| 62 5b 31 31 5d 3b 0a 58 | 20 20 20 20 20 20 2f 2a |b[11];.X| /*|
|00005220| 20 41 73 73 75 6d 65 20 | 63 6f 6c 6f 72 73 70 61 | Assume |colorspa|
|00005230| 63 65 20 69 73 20 59 43 | 62 43 72 2c 20 75 6e 6c |ce is YC|bCr, unl|
|00005240| 65 73 73 20 55 49 20 68 | 61 73 20 6f 76 65 72 72 |ess UI h|as overr|
|00005250| 69 64 64 65 6e 20 6d 65 | 20 2a 2f 0a 58 20 20 20 |idden me| */.X |
|00005260| 20 20 20 69 66 20 28 63 | 69 6e 66 6f 2d 3e 6a 70 | if (c|info->jp|
|00005270| 65 67 5f 63 6f 6c 6f 72 | 5f 73 70 61 63 65 20 3d |eg_color|_space =|
|00005280| 3d 20 43 53 5f 55 4e 4b | 4e 4f 57 4e 29 0a 58 09 |= CS_UNK|NOWN).X.|
|00005290| 63 69 6e 66 6f 2d 3e 6a | 70 65 67 5f 63 6f 6c 6f |cinfo->j|peg_colo|
|000052a0| 72 5f 73 70 61 63 65 20 | 3d 20 43 53 5f 59 43 62 |r_space |= CS_YCb|
|000052b0| 43 72 3b 0a 58 20 20 20 | 20 20 20 54 52 41 43 45 |Cr;.X | TRACE|
|000052c0| 4d 53 33 28 63 69 6e 66 | 6f 2d 3e 65 6d 65 74 68 |MS3(cinf|o->emeth|
|000052d0| 6f 64 73 2c 20 31 2c 20 | 22 4a 46 49 46 20 41 50 |ods, 1, |"JFIF AP|
|000052e0| 50 30 20 6d 61 72 6b 65 | 72 2c 20 64 65 6e 73 69 |P0 marke|r, densi|
|000052f0| 74 79 20 25 64 78 25 64 | 20 20 25 64 22 2c 0a 58 |ty %dx%d| %d",.X|
|00005300| 09 20 20 20 20 20 20 20 | 63 69 6e 66 6f 2d 3e 58 |. |cinfo->X|
|00005310| 5f 64 65 6e 73 69 74 79 | 2c 20 63 69 6e 66 6f 2d |_density|, cinfo-|
|00005320| 3e 59 5f 64 65 6e 73 69 | 74 79 2c 20 63 69 6e 66 |>Y_densi|ty, cinf|
|00005330| 6f 2d 3e 64 65 6e 73 69 | 74 79 5f 75 6e 69 74 29 |o->densi|ty_unit)|
|00005340| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 62 5b 31 |;.X | if (b[1|
|00005350| 32 5d 20 7c 20 62 5b 31 | 33 5d 29 0a 58 09 54 52 |2] | b[1|3]).X.TR|
|00005360| 41 43 45 4d 53 32 28 63 | 69 6e 66 6f 2d 3e 65 6d |ACEMS2(c|info->em|
|00005370| 65 74 68 6f 64 73 2c 20 | 31 2c 20 22 20 20 20 20 |ethods, |1, " |
|00005380| 77 69 74 68 20 25 64 20 | 78 20 25 64 20 74 68 75 |with %d |x %d thu|
|00005390| 6d 62 6e 61 69 6c 20 69 | 6d 61 67 65 22 2c 0a 58 |mbnail i|mage",.X|
|000053a0| 09 09 20 62 5b 31 32 5d | 2c 20 62 5b 31 33 5d 29 |.. b[12]|, b[13])|
|000053b0| 3b 0a 58 20 20 20 20 20 | 20 69 66 20 28 6c 65 6e |;.X | if (len|
|000053c0| 67 74 68 20 21 3d 20 28 | 28 49 4e 54 33 32 29 20 |gth != (|(INT32) |
|000053d0| 62 5b 31 32 5d 20 2a 20 | 28 49 4e 54 33 32 29 20 |b[12] * |(INT32) |
|000053e0| 62 5b 31 33 5d 20 2a 20 | 28 49 4e 54 33 32 29 20 |b[13] * |(INT32) |
|000053f0| 33 29 29 0a 58 09 54 52 | 41 43 45 4d 53 31 28 63 |3)).X.TR|ACEMS1(c|
|00005400| 69 6e 66 6f 2d 3e 65 6d | 65 74 68 6f 64 73 2c 20 |info->em|ethods, |
|00005410| 31 2c 0a 58 09 09 20 22 | 57 61 72 6e 69 6e 67 3a |1,.X.. "|Warning:|
|00005420| 20 74 68 75 6d 62 6e 61 | 69 6c 20 69 6d 61 67 65 | thumbna|il image|
|00005430| 20 73 69 7a 65 20 64 6f | 65 73 20 6e 6f 74 20 6d | size do|es not m|
|00005440| 61 74 63 68 20 64 61 74 | 61 20 6c 65 6e 67 74 68 |atch dat|a length|
|00005450| 20 25 75 22 2c 0a 58 09 | 09 20 28 69 6e 74 29 20 | %u",.X.|. (int) |
|00005460| 6c 65 6e 67 74 68 29 3b | 0a 58 20 20 20 20 7d 20 |length);|.X } |
|00005470| 65 6c 73 65 20 7b 0a 58 | 20 20 20 20 20 20 54 52 |else {.X| TR|
|00005480| 41 43 45 4d 53 31 28 63 | 69 6e 66 6f 2d 3e 65 6d |ACEMS1(c|info->em|
|00005490| 65 74 68 6f 64 73 2c 20 | 31 2c 20 22 55 6e 6b 6e |ethods, |1, "Unkn|
|000054a0| 6f 77 6e 20 41 50 50 30 | 20 6d 61 72 6b 65 72 20 |own APP0| marker |
|000054b0| 28 6e 6f 74 20 4a 46 49 | 46 29 2c 20 6c 65 6e 67 |(not JFI|F), leng|
|000054c0| 74 68 20 25 75 22 2c 0a | 58 09 20 20 20 20 20 20 |th %u",.|X. |
|000054d0| 20 28 69 6e 74 29 20 6c | 65 6e 67 74 68 20 2b 20 | (int) l|ength + |
|000054e0| 4a 46 49 46 5f 4c 45 4e | 29 3b 0a 58 20 20 20 20 |JFIF_LEN|);.X |
|000054f0| 7d 0a 58 20 20 7d 20 65 | 6c 73 65 20 7b 0a 58 20 |}.X } e|lse {.X |
|00005500| 20 20 20 54 52 41 43 45 | 4d 53 31 28 63 69 6e 66 | TRACE|MS1(cinf|
|00005510| 6f 2d 3e 65 6d 65 74 68 | 6f 64 73 2c 20 31 2c 20 |o->emeth|ods, 1, |
|00005520| 22 53 68 6f 72 74 20 41 | 50 50 30 20 6d 61 72 6b |"Short A|PP0 mark|
|00005530| 65 72 2c 20 6c 65 6e 67 | 74 68 20 25 75 22 2c 20 |er, leng|th %u", |
|00005540| 28 69 6e 74 29 20 6c 65 | 6e 67 74 68 29 3b 0a 58 |(int) le|ngth);.X|
|00005550| 20 20 7d 0a 58 0a 58 20 | 20 77 68 69 6c 65 20 28 | }.X.X | while (|
|00005560| 6c 65 6e 67 74 68 2d 2d | 20 3e 20 30 29 09 09 2f |length--| > 0)../|
|00005570| 2a 20 73 6b 69 70 20 61 | 6e 79 20 72 65 6d 61 69 |* skip a|ny remai|
|00005580| 6e 69 6e 67 20 64 61 74 | 61 20 2a 2f 0a 58 20 20 |ning dat|a */.X |
|00005590| 20 20 28 76 6f 69 64 29 | 20 4a 47 45 54 43 28 63 | (void)| JGETC(c|
|000055a0| 69 6e 66 6f 29 3b 0a 58 | 7d 0a 58 0a 58 0a 58 4c |info);.X|}.X.X.XL|
|000055b0| 4f 43 41 4c 20 76 6f 69 | 64 0a 58 67 65 74 5f 73 |OCAL voi|d.Xget_s|
|000055c0| 6f 66 20 28 64 65 63 6f | 6d 70 72 65 73 73 5f 69 |of (deco|mpress_i|
|000055d0| 6e 66 6f 5f 70 74 72 20 | 63 69 6e 66 6f 2c 20 69 |nfo_ptr |cinfo, i|
|000055e0| 6e 74 20 63 6f 64 65 29 | 0a 58 2f 2a 20 50 72 6f |nt code)|.X/* Pro|
|000055f0| 63 65 73 73 20 61 20 53 | 4f 46 6e 20 6d 61 72 6b |cess a S|OFn mark|
|00005600| 65 72 20 2a 2f 0a 58 7b | 0a 58 20 20 49 4e 54 33 |er */.X{|.X INT3|
|00005610| 32 20 6c 65 6e 67 74 68 | 3b 0a 58 20 20 73 68 6f |2 length|;.X sho|
|00005620| 72 74 20 63 69 3b 0a 58 | 20 20 69 6e 74 20 63 3b |rt ci;.X| int c;|
|00005630| 0a 58 20 20 6a 70 65 67 | 5f 63 6f 6d 70 6f 6e 65 |.X jpeg|_compone|
|00005640| 6e 74 5f 69 6e 66 6f 20 | 2a 20 63 6f 6d 70 70 74 |nt_info |* comppt|
|00005650| 72 3b 0a 58 20 20 0a 58 | 20 20 6c 65 6e 67 74 68 |r;.X .X| length|
|00005660| 20 3d 20 67 65 74 5f 32 | 62 79 74 65 73 28 63 69 | = get_2|bytes(ci|
|00005670| 6e 66 6f 29 3b 0a 58 20 | 20 0a 58 20 20 63 69 6e |nfo);.X | .X cin|
|00005680| 66 6f 2d 3e 64 61 74 61 | 5f 70 72 65 63 69 73 69 |fo->data|_precisi|
|00005690| 6f 6e 20 3d 20 4a 47 45 | 54 43 28 63 69 6e 66 6f |on = JGE|TC(cinfo|
|000056a0| 29 3b 0a 58 20 20 63 69 | 6e 66 6f 2d 3e 69 6d 61 |);.X ci|nfo->ima|
|000056b0| 67 65 5f 68 65 69 67 68 | 74 20 20 20 3d 20 67 65 |ge_heigh|t = ge|
|000056c0| 74 5f 32 62 79 74 65 73 | 28 63 69 6e 66 6f 29 3b |t_2bytes|(cinfo);|
|000056d0| 0a 58 20 20 63 69 6e 66 | 6f 2d 3e 69 6d 61 67 65 |.X cinf|o->image|
|000056e0| 5f 77 69 64 74 68 20 20 | 20 20 3d 20 67 65 74 5f |_width | = get_|
|000056f0| 32 62 79 74 65 73 28 63 | 69 6e 66 6f 29 3b 0a 58 |2bytes(c|info);.X|
|00005700| 20 20 63 69 6e 66 6f 2d | 3e 6e 75 6d 5f 63 6f 6d | cinfo-|>num_com|
|00005710| 70 6f 6e 65 6e 74 73 20 | 3d 20 4a 47 45 54 43 28 |ponents |= JGETC(|
|00005720| 63 69 6e 66 6f 29 3b 0a | 58 0a 58 20 20 54 52 41 |cinfo);.|X.X TRA|
|00005730| 43 45 4d 53 34 28 63 69 | 6e 66 6f 2d 3e 65 6d 65 |CEMS4(ci|nfo->eme|
|00005740| 74 68 6f 64 73 2c 20 31 | 2c 0a 58 09 20 20 20 22 |thods, 1|,.X. "|
|00005750| 53 74 61 72 74 20 4f 66 | 20 46 72 61 6d 65 20 30 |Start Of| Frame 0|
|00005760| 78 25 30 32 78 3a 20 77 | 69 64 74 68 3d 25 75 2c |x%02x: w|idth=%u,|
|00005770| 20 68 65 69 67 68 74 3d | 25 75 2c 20 63 6f 6d 70 | height=|%u, comp|
|00005780| 6f 6e 65 6e 74 73 3d 25 | 64 22 2c 0a 58 09 20 20 |onents=%|d",.X. |
|00005790| 20 63 6f 64 65 2c 20 28 | 69 6e 74 29 20 63 69 6e | code, (|int) cin|
|000057a0| 66 6f 2d 3e 69 6d 61 67 | 65 5f 77 69 64 74 68 2c |fo->imag|e_width,|
|000057b0| 20 28 69 6e 74 29 20 63 | 69 6e 66 6f 2d 3e 69 6d | (int) c|info->im|
|000057c0| 61 67 65 5f 68 65 69 67 | 68 74 2c 0a 58 09 20 20 |age_heig|ht,.X. |
|000057d0| 20 63 69 6e 66 6f 2d 3e | 6e 75 6d 5f 63 6f 6d 70 | cinfo->|num_comp|
|000057e0| 6f 6e 65 6e 74 73 29 3b | 0a 58 0a 58 20 20 2f 2a |onents);|.X.X /*|
|000057f0| 20 57 65 20 64 6f 6e 27 | 74 20 73 75 70 70 6f 72 | We don'|t suppor|
|00005800| 74 20 66 69 6c 65 73 20 | 69 6e 20 77 68 69 63 68 |t files |in which|
|00005810| 20 74 68 65 20 69 6d 61 | 67 65 20 68 65 69 67 68 | the ima|ge heigh|
|00005820| 74 20 69 73 20 69 6e 69 | 74 69 61 6c 6c 79 20 73 |t is ini|tially s|
|00005830| 70 65 63 69 66 69 65 64 | 20 2a 2f 0a 58 20 20 2f |pecified| */.X /|
|00005840| 2a 20 61 73 20 30 20 61 | 6e 64 20 69 73 20 6c 61 |* as 0 a|nd is la|
|00005850| 74 65 72 20 72 65 64 65 | 66 69 6e 65 64 20 62 79 |ter rede|fined by|
|00005860| 20 44 4e 4c 2e 20 20 41 | 73 20 6c 6f 6e 67 20 61 | DNL. A|s long a|
|00005870| 73 20 77 65 20 68 61 76 | 65 20 74 6f 20 63 68 65 |s we hav|e to che|
|00005880| 63 6b 20 74 68 61 74 2c | 20 20 2a 2f 0a 58 20 20 |ck that,| */.X |
|00005890| 2f 2a 20 6d 69 67 68 74 | 20 61 73 20 77 65 6c 6c |/* might| as well|
|000058a0| 20 68 61 76 65 20 61 20 | 67 65 6e 65 72 61 6c 20 | have a |general |
|000058b0| 73 61 6e 69 74 79 20 63 | 68 65 63 6b 2e 20 2a 2f |sanity c|heck. */|
|000058c0| 0a 58 20 20 69 66 20 28 | 63 69 6e 66 6f 2d 3e 69 |.X if (|cinfo->i|
|000058d0| 6d 61 67 65 5f 68 65 69 | 67 68 74 20 3c 3d 20 30 |mage_hei|ght <= 0|
|000058e0| 20 7c 7c 20 63 69 6e 66 | 6f 2d 3e 69 6d 61 67 65 | || cinf|o->image|
|000058f0| 5f 77 69 64 74 68 20 3c | 3d 20 30 0a 58 20 20 20 |_width <|= 0.X |
|00005900| 20 20 20 7c 7c 20 63 69 | 6e 66 6f 2d 3e 6e 75 6d | || ci|nfo->num|
|00005910| 5f 63 6f 6d 70 6f 6e 65 | 6e 74 73 20 3c 3d 20 30 |_compone|nts <= 0|
|00005920| 29 0a 58 20 20 20 20 45 | 52 52 45 58 49 54 28 63 |).X E|RREXIT(c|
|00005930| 69 6e 66 6f 2d 3e 65 6d | 65 74 68 6f 64 73 2c 20 |info->em|ethods, |
|00005940| 22 45 6d 70 74 79 20 4a | 50 45 47 20 69 6d 61 67 |"Empty J|PEG imag|
|00005950| 65 20 28 44 4e 4c 20 6e | 6f 74 20 73 75 70 70 6f |e (DNL n|ot suppo|
|00005960| 72 74 65 64 29 22 29 3b | 0a 58 0a 58 23 69 66 64 |rted)");|.X.X#ifd|
|00005970| 65 66 20 45 49 47 48 54 | 5f 42 49 54 5f 53 41 4d |ef EIGHT|_BIT_SAM|
|00005980| 50 4c 45 53 0a 58 20 20 | 69 66 20 28 63 69 6e 66 |PLES.X |if (cinf|
|00005990| 6f 2d 3e 64 61 74 61 5f | 70 72 65 63 69 73 69 6f |o->data_|precisio|
|000059a0| 6e 20 21 3d 20 38 29 0a | 58 20 20 20 20 45 52 52 |n != 8).|X ERR|
|000059b0| 45 58 49 54 28 63 69 6e | 66 6f 2d 3e 65 6d 65 74 |EXIT(cin|fo->emet|
|000059c0| 68 6f 64 73 2c 20 22 55 | 6e 73 75 70 70 6f 72 74 |hods, "U|nsupport|
|000059d0| 65 64 20 4a 50 45 47 20 | 64 61 74 61 20 70 72 65 |ed JPEG |data pre|
|000059e0| 63 69 73 69 6f 6e 22 29 | 3b 0a 58 23 65 6e 64 69 |cision")|;.X#endi|
|000059f0| 66 0a 58 23 69 66 64 65 | 66 20 54 57 45 4c 56 45 |f.X#ifde|f TWELVE|
|00005a00| 5f 42 49 54 5f 53 41 4d | 50 4c 45 53 0a 58 20 20 |_BIT_SAM|PLES.X |
|00005a10| 69 66 20 28 63 69 6e 66 | 6f 2d 3e 64 61 74 61 5f |if (cinf|o->data_|
|00005a20| 70 72 65 63 69 73 69 6f | 6e 20 21 3d 20 31 32 29 |precisio|n != 12)|
|00005a30| 20 2f 2a 20 74 68 69 73 | 20 6e 65 65 64 73 20 6d | /* this| needs m|
|00005a40| 6f 72 65 20 74 68 6f 75 | 67 68 74 3f 3f 20 2a 2f |ore thou|ght?? */|
|00005a50| 0a 58 20 20 20 20 45 52 | 52 45 58 49 54 28 63 69 |.X ER|REXIT(ci|
|00005a60| 6e 66 6f 2d 3e 65 6d 65 | 74 68 6f 64 73 2c 20 22 |nfo->eme|thods, "|
|00005a70| 55 6e 73 75 70 70 6f 72 | 74 65 64 20 4a 50 45 47 |Unsuppor|ted JPEG|
|00005a80| 20 64 61 74 61 20 70 72 | 65 63 69 73 69 6f 6e 22 | data pr|ecision"|
|00005a90| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 23 69 66 64 |);.X#end|if.X#ifd|
|00005aa0| 65 66 20 53 49 58 54 45 | 45 4e 5f 42 49 54 5f 53 |ef SIXTE|EN_BIT_S|
|00005ab0| 41 4d 50 4c 45 53 0a 58 | 20 20 69 66 20 28 63 69 |AMPLES.X| if (ci|
|00005ac0| 6e 66 6f 2d 3e 64 61 74 | 61 5f 70 72 65 63 69 73 |nfo->dat|a_precis|
|00005ad0| 69 6f 6e 20 21 3d 20 31 | 36 29 20 2f 2a 20 74 68 |ion != 1|6) /* th|
|00005ae0| 69 73 20 6e 65 65 64 73 | 20 6d 6f 72 65 20 74 68 |is needs| more th|
|00005af0| 6f 75 67 68 74 3f 3f 20 | 2a 2f 0a 58 20 20 20 20 |ought?? |*/.X |
|00005b00| 45 52 52 45 58 49 54 28 | 63 69 6e 66 6f 2d 3e 65 |ERREXIT(|cinfo->e|
|00005b10| 6d 65 74 68 6f 64 73 2c | 20 22 55 6e 73 75 70 70 |methods,| "Unsupp|
|00005b20| 6f 72 74 65 64 20 4a 50 | 45 47 20 64 61 74 61 20 |orted JP|EG data |
|00005b30| 70 72 65 63 69 73 69 6f | 6e 22 29 3b 0a 58 23 65 |precisio|n");.X#e|
|00005b40| 6e 64 69 66 0a 58 0a 58 | 20 20 69 66 20 28 6c 65 |ndif.X.X| if (le|
|00005b50| 6e 67 74 68 20 21 3d 20 | 28 63 69 6e 66 6f 2d 3e |ngth != |(cinfo->|
|00005b60| 6e 75 6d 5f 63 6f 6d 70 | 6f 6e 65 6e 74 73 20 2a |num_comp|onents *|
|00005b70| 20 33 20 2b 20 38 29 29 | 0a 58 20 20 20 20 45 52 | 3 + 8))|.X ER|
|00005b80| 52 45 58 49 54 28 63 69 | 6e 66 6f 2d 3e 65 6d 65 |REXIT(ci|nfo->eme|
|00005b90| 74 68 6f 64 73 2c 20 22 | 42 6f 67 75 73 20 53 4f |thods, "|Bogus SO|
|00005ba0| 46 20 6c 65 6e 67 74 68 | 22 29 3b 0a 58 0a 58 20 |F length|");.X.X |
|00005bb0| 20 63 69 6e 66 6f 2d 3e | 63 6f 6d 70 5f 69 6e 66 | cinfo->|comp_inf|
|00005bc0| 6f 20 3d 20 28 6a 70 65 | 67 5f 63 6f 6d 70 6f 6e |o = (jpe|g_compon|
|00005bd0| 65 6e 74 5f 69 6e 66 6f | 20 2a 29 20 28 2a 63 69 |ent_info| *) (*ci|
|00005be0| 6e 66 6f 2d 3e 65 6d 65 | 74 68 6f 64 73 2d 3e 61 |nfo->eme|thods->a|
|00005bf0| 6c 6c 6f 63 5f 73 6d 61 | 6c 6c 29 0a 58 09 09 09 |lloc_sma|ll).X...|
|00005c00| 28 63 69 6e 66 6f 2d 3e | 6e 75 6d 5f 63 6f 6d 70 |(cinfo->|num_comp|
|00005c10| 6f 6e 65 6e 74 73 20 2a | 20 53 49 5a 45 4f 46 28 |onents *| SIZEOF(|
|00005c20| 6a 70 65 67 5f 63 6f 6d | 70 6f 6e 65 6e 74 5f 69 |jpeg_com|ponent_i|
|00005c30| 6e 66 6f 29 29 3b 0a 58 | 20 20 0a 58 20 20 66 6f |nfo));.X| .X fo|
|00005c40| 72 20 28 63 69 20 3d 20 | 30 3b 20 63 69 20 3c 20 |r (ci = |0; ci < |
|00005c50| 63 69 6e 66 6f 2d 3e 6e | 75 6d 5f 63 6f 6d 70 6f |cinfo->n|um_compo|
|00005c60| 6e 65 6e 74 73 3b 20 63 | 69 2b 2b 29 20 7b 0a 58 |nents; c|i++) {.X|
|00005c70| 20 20 20 20 63 6f 6d 70 | 70 74 72 20 3d 20 26 63 | comp|ptr = &c|
|00005c80| 69 6e 66 6f 2d 3e 63 6f | 6d 70 5f 69 6e 66 6f 5b |info->co|mp_info[|
|00005c90| 63 69 5d 3b 0a 58 20 20 | 20 20 63 6f 6d 70 70 74 |ci];.X | comppt|
|00005ca0| 72 2d 3e 63 6f 6d 70 6f | 6e 65 6e 74 5f 69 6e 64 |r->compo|nent_ind|
|00005cb0| 65 78 20 3d 20 63 69 3b | 0a 58 20 20 20 20 63 6f |ex = ci;|.X co|
|00005cc0| 6d 70 70 74 72 2d 3e 63 | 6f 6d 70 6f 6e 65 6e 74 |mpptr->c|omponent|
|00005cd0| 5f 69 64 20 3d 20 4a 47 | 45 54 43 28 63 69 6e 66 |_id = JG|ETC(cinf|
|00005ce0| 6f 29 3b 0a 58 20 20 20 | 20 63 20 3d 20 4a 47 45 |o);.X | c = JGE|
|00005cf0| 54 43 28 63 69 6e 66 6f | 29 3b 0a 58 20 20 20 20 |TC(cinfo|);.X |
|00005d00| 63 6f 6d 70 70 74 72 2d | 3e 68 5f 73 61 6d 70 5f |compptr-|>h_samp_|
|00005d10| 66 61 63 74 6f 72 20 3d | 20 28 63 20 3e 3e 20 34 |factor =| (c >> 4|
|00005d20| 29 20 26 20 31 35 3b 0a | 58 20 20 20 20 63 6f 6d |) & 15;.|X com|
|00005d30| 70 70 74 72 2d 3e 76 5f | 73 61 6d 70 5f 66 61 63 |pptr->v_|samp_fac|
|00005d40| 74 6f 72 20 3d 20 28 63 | 20 20 20 20 20 29 20 26 |tor = (c| ) &|
|00005d50| 20 31 35 3b 0a 58 20 20 | 20 20 63 6f 6d 70 70 74 | 15;.X | comppt|
|00005d60| 72 2d 3e 71 75 61 6e 74 | 5f 74 62 6c 5f 6e 6f 20 |r->quant|_tbl_no |
|00005d70| 20 3d 20 4a 47 45 54 43 | 28 63 69 6e 66 6f 29 3b | = JGETC|(cinfo);|
|00005d80| 0a 58 20 20 20 20 20 20 | 0a 58 20 20 20 20 54 52 |.X |.X TR|
|00005d90| 41 43 45 4d 53 34 28 63 | 69 6e 66 6f 2d 3e 65 6d |ACEMS4(c|info->em|
|00005da0| 65 74 68 6f 64 73 2c 20 | 31 2c 20 22 20 20 20 20 |ethods, |1, " |
|00005db0| 43 6f 6d 70 6f 6e 65 6e | 74 20 25 64 3a 20 25 64 |Componen|t %d: %d|
|00005dc0| 68 78 25 64 76 20 71 3d | 25 64 22 2c 0a 58 09 20 |hx%dv q=|%d",.X. |
|00005dd0| 20 20 20 20 63 6f 6d 70 | 70 74 72 2d 3e 63 6f 6d | comp|ptr->com|
|00005de0| 70 6f 6e 65 6e 74 5f 69 | 64 2c 20 63 6f 6d 70 70 |ponent_i|d, compp|
|00005df0| 74 72 2d 3e 68 5f 73 61 | 6d 70 5f 66 61 63 74 6f |tr->h_sa|mp_facto|
|00005e00| 72 2c 0a 58 09 20 20 20 | 20 20 63 6f 6d 70 70 74 |r,.X. | comppt|
|00005e10| 72 2d 3e 76 5f 73 61 6d | 70 5f 66 61 63 74 6f 72 |r->v_sam|p_factor|
|00005e20| 2c 20 63 6f 6d 70 70 74 | 72 2d 3e 71 75 61 6e 74 |, comppt|r->quant|
|00005e30| 5f 74 62 6c 5f 6e 6f 29 | 3b 0a 58 20 20 7d 0a 58 |_tbl_no)|;.X }.X|
|00005e40| 7d 0a 58 0a 58 0a 58 4c | 4f 43 41 4c 20 76 6f 69 |}.X.X.XL|OCAL voi|
|00005e50| 64 0a 58 67 65 74 5f 73 | 6f 73 20 28 64 65 63 6f |d.Xget_s|os (deco|
|00005e60| 6d 70 72 65 73 73 5f 69 | 6e 66 6f 5f 70 74 72 20 |mpress_i|nfo_ptr |
|00005e70| 63 69 6e 66 6f 29 0a 58 | 2f 2a 20 50 72 6f 63 65 |cinfo).X|/* Proce|
|00005e80| 73 73 20 61 20 53 4f 53 | 20 6d 61 72 6b 65 72 20 |ss a SOS| marker |
|00005e90| 2a 2f 0a 58 7b 0a 58 20 | 20 49 4e 54 33 32 20 6c |*/.X{.X | INT32 l|
|00005ea0| 65 6e 67 74 68 3b 0a 58 | 20 20 69 6e 74 20 69 2c |ength;.X| int i,|
|00005eb0| 20 63 69 2c 20 6e 2c 20 | 63 2c 20 63 63 3b 0a 58 | ci, n, |c, cc;.X|
|00005ec0| 20 20 6a 70 65 67 5f 63 | 6f 6d 70 6f 6e 65 6e 74 | jpeg_c|omponent|
|00005ed0| 5f 69 6e 66 6f 20 2a 20 | 63 6f 6d 70 70 74 72 3b |_info * |compptr;|
|00005ee0| 0a 58 20 20 0a 58 20 20 | 6c 65 6e 67 74 68 20 3d |.X .X |length =|
|00005ef0| 20 67 65 74 5f 32 62 79 | 74 65 73 28 63 69 6e 66 | get_2by|tes(cinf|
|00005f00| 6f 29 3b 0a 58 20 20 0a | 58 20 20 6e 20 3d 20 4a |o);.X .|X n = J|
|00005f10| 47 45 54 43 28 63 69 6e | 66 6f 29 3b 20 20 2f 2a |GETC(cin|fo); /*|
|00005f20| 20 4e 75 6d 62 65 72 20 | 6f 66 20 63 6f 6d 70 6f | Number |of compo|
|00005f30| 6e 65 6e 74 73 20 2a 2f | 0a 58 20 20 63 69 6e 66 |nents */|.X cinf|
|00005f40| 6f 2d 3e 63 6f 6d 70 73 | 5f 69 6e 5f 73 63 61 6e |o->comps|_in_scan|
|00005f50| 20 3d 20 6e 3b 0a 58 20 | 20 6c 65 6e 67 74 68 20 | = n;.X | length |
|00005f60| 2d 3d 20 33 3b 0a 58 20 | 20 0a 58 20 20 69 66 20 |-= 3;.X | .X if |
|00005f70| 28 6c 65 6e 67 74 68 20 | 21 3d 20 28 6e 20 2a 20 |(length |!= (n * |
|00005f80| 32 20 2b 20 33 29 20 7c | 7c 20 6e 20 3c 20 31 20 |2 + 3) ||| n < 1 |
|00005f90| 7c 7c 20 6e 20 3e 20 4d | 41 58 5f 43 4f 4d 50 53 ||| n > M|AX_COMPS|
|00005fa0| 5f 49 4e 5f 53 43 41 4e | 29 0a 58 20 20 20 20 45 |_IN_SCAN|).X E|
|00005fb0| 52 52 45 58 49 54 28 63 | 69 6e 66 6f 2d 3e 65 6d |RREXIT(c|info->em|
|00005fc0| 65 74 68 6f 64 73 2c 20 | 22 42 6f 67 75 73 20 53 |ethods, |"Bogus S|
|00005fd0| 4f 53 20 6c 65 6e 67 74 | 68 22 29 3b 0a 58 0a 58 |OS lengt|h");.X.X|
|00005fe0| 20 20 54 52 41 43 45 4d | 53 31 28 63 69 6e 66 6f | TRACEM|S1(cinfo|
|00005ff0| 2d 3e 65 6d 65 74 68 6f | 64 73 2c 20 31 2c 20 22 |->emetho|ds, 1, "|
|00006000| 53 74 61 72 74 20 4f 66 | 20 53 63 61 6e 3a 20 25 |Start Of| Scan: %|
|00006010| 64 20 63 6f 6d 70 6f 6e | 65 6e 74 73 22 2c 20 6e |d compon|ents", n|
|00006020| 29 3b 0a 58 20 20 0a 58 | 20 20 66 6f 72 20 28 69 |);.X .X| for (i|
|00006030| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 3b 20 69 2b 2b | = 0; i |< n; i++|
|00006040| 29 20 7b 0a 58 20 20 20 | 20 63 63 20 3d 20 4a 47 |) {.X | cc = JG|
|00006050| 45 54 43 28 63 69 6e 66 | 6f 29 3b 0a 58 20 20 20 |ETC(cinf|o);.X |
|00006060| 20 63 20 3d 20 4a 47 45 | 54 43 28 63 69 6e 66 6f | c = JGE|TC(cinfo|
|00006070| 29 3b 0a 58 20 20 20 20 | 6c 65 6e 67 74 68 20 2d |);.X |length -|
|00006080| 3d 20 32 3b 0a 58 20 20 | 20 20 0a 58 20 20 20 20 |= 2;.X | .X |
|00006090| 66 6f 72 20 28 63 69 20 | 3d 20 30 3b 20 63 69 20 |for (ci |= 0; ci |
|000060a0| 3c 20 63 69 6e 66 6f 2d | 3e 6e 75 6d 5f 63 6f 6d |< cinfo-|>num_com|
|000060b0| 70 6f 6e 65 6e 74 73 3b | 20 63 69 2b 2b 29 0a 58 |ponents;| ci++).X|
|000060c0| 20 20 20 20 20 20 69 66 | 20 28 63 63 20 3d 3d 20 | if| (cc == |
|000060d0| 63 69 6e 66 6f 2d 3e 63 | 6f 6d 70 5f 69 6e 66 6f |cinfo->c|omp_info|
|000060e0| 5b 63 69 5d 2e 63 6f 6d | 70 6f 6e 65 6e 74 5f 69 |[ci].com|ponent_i|
|000060f0| 64 29 0a 58 09 62 72 65 | 61 6b 3b 0a 58 20 20 20 |d).X.bre|ak;.X |
|00006100| 20 0a 58 20 20 20 20 69 | 66 20 28 63 69 20 3e 3d | .X i|f (ci >=|
|00006110| 20 63 69 6e 66 6f 2d 3e | 6e 75 6d 5f 63 6f 6d 70 | cinfo->|num_comp|
|00006120| 6f 6e 65 6e 74 73 29 0a | 58 20 20 20 20 20 20 45 |onents).|X E|
|00006130| 52 52 45 58 49 54 28 63 | 69 6e 66 6f 2d 3e 65 6d |RREXIT(c|info->em|
|00006140| 65 74 68 6f 64 73 2c 20 | 22 49 6e 76 61 6c 69 64 |ethods, |"Invalid|
|00006150| 20 63 6f 6d 70 6f 6e 65 | 6e 74 20 6e 75 6d 62 65 | compone|nt numbe|
|00006160| 72 20 69 6e 20 53 4f 53 | 22 29 3b 0a 58 20 20 20 |r in SOS|");.X |
|00006170| 20 0a 58 20 20 20 20 63 | 6f 6d 70 70 74 72 20 3d | .X c|ompptr =|
|00006180| 20 26 63 69 6e 66 6f 2d | 3e 63 6f 6d 70 5f 69 6e | &cinfo-|>comp_in|
|00006190| 66 6f 5b 63 69 5d 3b 0a | 58 20 20 20 20 63 69 6e |fo[ci];.|X cin|
|000061a0| 66 6f 2d 3e 63 75 72 5f | 63 6f 6d 70 5f 69 6e 66 |fo->cur_|comp_inf|
|000061b0| 6f 5b 69 5d 20 3d 20 63 | 6f 6d 70 70 74 72 3b 0a |o[i] = c|ompptr;.|
|000061c0| 58 20 20 20 20 63 6f 6d | 70 70 74 72 2d 3e 64 63 |X com|pptr->dc|
|000061d0| 5f 74 62 6c 5f 6e 6f 20 | 3d 20 28 63 20 3e 3e 20 |_tbl_no |= (c >> |
|000061e0| 34 29 20 26 20 31 35 3b | 0a 58 20 20 20 20 63 6f |4) & 15;|.X co|
|000061f0| 6d 70 70 74 72 2d 3e 61 | 63 5f 74 62 6c 5f 6e 6f |mpptr->a|c_tbl_no|
|00006200| 20 3d 20 28 63 20 20 20 | 20 20 29 20 26 20 31 35 | = (c | ) & 15|
|00006210| 3b 0a 58 20 20 20 20 0a | 58 20 20 20 20 54 52 41 |;.X .|X TRA|
|00006220| 43 45 4d 53 33 28 63 69 | 6e 66 6f 2d 3e 65 6d 65 |CEMS3(ci|nfo->eme|
|00006230| 74 68 6f 64 73 2c 20 31 | 2c 20 22 20 20 20 20 63 |thods, 1|, " c|
|00006240| 25 64 3a 20 5b 64 63 3d | 25 64 20 61 63 3d 25 64 |%d: [dc=|%d ac=%d|
|00006250| 5d 22 2c 20 63 63 2c 0a | 58 09 20 20 20 20 20 63 |]", cc,.|X. c|
|00006260| 6f 6d 70 70 74 72 2d 3e | 64 63 5f 74 62 6c 5f 6e |ompptr->|dc_tbl_n|
|00006270| 6f 2c 20 63 6f 6d 70 70 | 74 72 2d 3e 61 63 5f 74 |o, compp|tr->ac_t|
|00006280| 62 6c 5f 6e 6f 29 3b 0a | 58 20 20 7d 0a 58 20 20 |bl_no);.|X }.X |
|00006290| 0a 58 20 20 77 68 69 6c | 65 20 28 6c 65 6e 67 74 |.X whil|e (lengt|
|000062a0| 68 20 3e 20 30 29 20 7b | 0a 58 20 20 20 20 28 76 |h > 0) {|.X (v|
|000062b0| 6f 69 64 29 20 4a 47 45 | 54 43 28 63 69 6e 66 6f |oid) JGE|TC(cinfo|
|000062c0| 29 3b 0a 58 20 20 20 20 | 6c 65 6e 67 74 68 2d 2d |);.X |length--|
|000062d0| 3b 0a 58 20 20 7d 0a 58 | 7d 0a 58 0a 58 0a 58 4c |;.X }.X|}.X.X.XL|
|000062e0| 4f 43 41 4c 20 76 6f 69 | 64 0a 58 67 65 74 5f 73 |OCAL voi|d.Xget_s|
|000062f0| 6f 69 20 28 64 65 63 6f | 6d 70 72 65 73 73 5f 69 |oi (deco|mpress_i|
|00006300| 6e 66 6f 5f 70 74 72 20 | 63 69 6e 66 6f 29 0a 58 |nfo_ptr |cinfo).X|
|00006310| 2f 2a 20 50 72 6f 63 65 | 73 73 20 61 6e 20 53 4f |/* Proce|ss an SO|
|00006320| 49 20 6d 61 72 6b 65 72 | 20 2a 2f 0a 58 7b 0a 58 |I marker| */.X{.X|
|00006330| 20 20 69 6e 74 20 69 3b | 0a 58 20 20 0a 58 20 20 | int i;|.X .X |
|00006340| 54 52 41 43 45 4d 53 28 | 63 69 6e 66 6f 2d 3e 65 |TRACEMS(|cinfo->e|
|00006350| 6d 65 74 68 6f 64 73 2c | 20 31 2c 20 22 53 74 61 |methods,| 1, "Sta|
|00006360| 72 74 20 6f 66 20 49 6d | 61 67 65 22 29 3b 0a 58 |rt of Im|age");.X|
|00006370| 0a 58 20 20 2f 2a 20 52 | 65 73 65 74 20 61 6c 6c |.X /* R|eset all|
|00006380| 20 70 61 72 61 6d 65 74 | 65 72 73 20 74 68 61 74 | paramet|ers that|
|00006390| 20 61 72 65 20 64 65 66 | 69 6e 65 64 20 74 6f 20 | are def|ined to |
|000063a0| 62 65 20 72 65 73 65 74 | 20 62 79 20 53 4f 49 20 |be reset| by SOI |
|000063b0| 2a 2f 0a 58 0a 58 20 20 | 66 6f 72 20 28 69 20 3d |*/.X.X |for (i =|
|000063c0| 20 30 3b 20 69 20 3c 20 | 4e 55 4d 5f 41 52 49 54 | 0; i < |NUM_ARIT|
|000063d0| 48 5f 54 42 4c 53 3b 20 | 69 2b 2b 29 20 7b 0a 58 |H_TBLS; |i++) {.X|
|000063e0| 20 20 20 20 63 69 6e 66 | 6f 2d 3e 61 72 69 74 68 | cinf|o->arith|
|000063f0| 5f 64 63 5f 4c 5b 69 5d | 20 3d 20 30 3b 0a 58 20 |_dc_L[i]| = 0;.X |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.