| ofs | hex dump | ascii |
|---|
| 0000 | ff d8 ff e0 00 10 4a 46 49 46 00 01 02 01 01 2c 01 2c 00 00 ff ed 0b ae 50 68 6f 74 6f 73 68 6f | ......JFIF.....,.,......Photosho |
| 0020 | 70 20 33 2e 30 00 38 42 49 4d 03 ed 00 00 00 00 00 10 01 2c 00 00 00 01 00 02 01 2c 00 00 00 01 | p.3.0.8BIM.........,.......,.... |
| 0040 | 00 02 38 42 49 4d 04 0d 00 00 00 00 00 04 00 00 00 78 38 42 49 4d 03 f3 00 00 00 00 00 08 00 00 | ..8BIM...........x8BIM.......... |
| 0060 | 00 00 00 00 00 00 38 42 49 4d 04 0a 00 00 00 00 00 01 00 00 38 42 49 4d 27 10 00 00 00 00 00 0a | ......8BIM..........8BIM'....... |
| 0080 | 00 01 00 00 00 00 00 00 00 02 38 42 49 4d 03 f5 00 00 00 00 00 48 00 2f 66 66 00 01 00 6c 66 66 | ..........8BIM.......H./ff...lff |
| 00a0 | 00 06 00 00 00 00 00 01 00 2f 66 66 00 01 00 a1 99 9a 00 06 00 00 00 00 00 01 00 32 00 00 00 01 | ........./ff...............2.... |
| 00c0 | 00 5a 00 00 00 06 00 00 00 00 00 01 00 35 00 00 00 01 00 2d 00 00 00 06 00 00 00 00 00 01 38 42 | .Z...........5.....-..........8B |
| 00e0 | 49 4d 03 f8 00 00 00 00 00 70 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff | IM.......p...................... |
| 0100 | ff ff 03 e8 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 | ................................ |
| 0120 | 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 00 00 00 00 | ................................ |
| 0140 | ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 00 00 38 42 49 4d 04 08 | ..........................8BIM.. |
| 0160 | 00 00 00 00 00 10 00 00 00 01 00 00 02 40 00 00 02 40 00 00 00 00 38 42 49 4d 04 14 00 00 00 00 | .............@...@....8BIM...... |
| 0180 | 00 04 00 00 00 02 38 42 49 4d 04 0c 00 00 00 00 0a 1d 00 00 00 01 00 00 00 70 00 00 00 22 00 00 | ......8BIM...............p...".. |
| 01a0 | 01 50 00 00 2c a0 00 00 0a 01 00 18 00 01 ff d8 ff e0 00 10 4a 46 49 46 00 01 02 01 00 48 00 48 | .P..,...............JFIF.....H.H |
| 01c0 | 00 00 ff fe 00 26 46 69 6c 65 20 77 72 69 74 74 65 6e 20 62 79 20 41 64 6f 62 65 20 50 68 6f 74 | .....&File.written.by.Adobe.Phot |
| 01e0 | 6f 73 68 6f 70 a8 20 35 2e 30 ff ee 00 0e 41 64 6f 62 65 00 64 80 00 00 00 01 ff db 00 84 00 0c | oshop..5.0....Adobe.d........... |
| 0200 | 08 08 08 09 08 0c 09 09 0c 11 0b 0a 0b 11 15 0f 0c 0c 0f 15 18 13 13 15 13 13 18 11 0c 0c 0c 0c | ................................ |
| 0220 | 0c 0c 11 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 01 | ................................ |
| 0240 | 0d 0b 0b 0d 0e 0d 10 0e 0e 10 14 0e 0e 0e 14 14 0e 0e 0e 0e 14 11 0c 0c 0c 0c 0c 11 11 0c 0c 0c | ................................ |
| 0260 | 0c 0c 0c 11 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c | ................................ |
| 0280 | ff c0 00 11 08 00 22 00 70 03 01 22 00 02 11 01 03 11 01 ff dd 00 04 00 07 ff c4 01 3f 00 00 01 | ......".p.."................?... |
| 02a0 | 05 01 01 01 01 01 01 00 00 00 00 00 00 00 03 00 01 02 04 05 06 07 08 09 0a 0b 01 00 01 05 01 01 | ................................ |
| 02c0 | 01 01 01 01 00 00 00 00 00 00 00 01 00 02 03 04 05 06 07 08 09 0a 0b 10 00 01 04 01 03 02 04 02 | ................................ |
| 02e0 | 05 07 06 08 05 03 0c 33 01 00 02 11 03 04 21 12 31 05 41 51 61 13 22 71 81 32 06 14 91 a1 b1 42 | .......3......!.1.AQa."q.2.....B |
| 0300 | 23 24 15 52 c1 62 33 34 72 82 d1 43 07 25 92 53 f0 e1 f1 63 73 35 16 a2 b2 83 26 44 93 54 64 45 | #$.R.b34r..C.%.S...cs5....&D.TdE |
| 0320 | c2 a3 74 36 17 d2 55 e2 65 f2 b3 84 c3 d3 75 e3 f3 46 27 94 a4 85 b4 95 c4 d4 e4 f4 a5 b5 c5 d5 | ..t6..U.e.....u..F'............. |
| 0340 | e5 f5 56 66 76 86 96 a6 b6 c6 d6 e6 f6 37 47 57 67 77 87 97 a7 b7 c7 d7 e7 f7 11 00 02 02 01 02 | ..Vfv........7GWgw.............. |
| 0360 | 04 04 03 04 05 06 07 07 06 05 35 01 00 02 11 03 21 31 12 04 41 51 61 71 22 13 05 32 81 91 14 a1 | ..........5.....!1..AQaq"..2.... |
| 0380 | b1 42 23 c1 52 d1 f0 33 24 62 e1 72 82 92 43 53 15 63 73 34 f1 25 06 16 a2 b2 83 07 26 35 c2 d2 | .B#.R..3$b.r..CS.cs4.%......&5.. |
| 03a0 | 44 93 54 a3 17 64 45 55 36 74 65 e2 f2 b3 84 c3 d3 75 e3 f3 46 94 a4 85 b4 95 c4 d4 e4 f4 a5 b5 | D.T..dEU6te......u..F........... |
| 03c0 | c5 d5 e5 f5 56 66 76 86 96 a6 b6 c6 d6 e6 f6 27 37 47 57 67 77 87 97 a7 b7 c7 ff da 00 0c 03 01 | ....Vfv........'7GWgw........... |
| 03e0 | 00 02 11 03 11 00 3f 00 e7 7f 60 66 3f a5 9c fa d8 f7 81 59 b9 c7 73 19 55 6c 6b 58 f7 7a f6 3f | ......?...`f?......Y..s.UlkX.z.? |
| 0400 | 75 9e b3 99 63 6d 65 5e cf d1 be af d2 bf 26 ff 00 b3 a8 74 5e 80 fe b2 ec 56 d5 92 cc 61 90 e7 | u...cme^......&....t^....V...a.. |
| 0420 | 54 f7 5a 03 da cb 40 dd 55 3b a8 77 f3 97 d7 ea 3d 94 dd 5d 76 b3 d1 b7 f9 df 4e cf 4f ac fa b5 | T.Z...@.U;.w....=..]v.....N.O... |
| 0440 | d4 2a c5 e9 b9 6f b1 cc a6 ac a6 57 9d 8b 71 0f 2d 17 e3 37 1e b3 89 93 e8 39 96 31 b8 f9 38 db | .*...o.....W..q.-..7.....9.1..8. |
| 0460 | fe cd ff 00 6a b1 32 3f 45 ea 7e 95 63 f4 b7 1c ac 1a 7a 17 48 aa ca 73 f3 33 29 36 9b c0 ae d6 | ....j.2?E.~.c.....z.H..s.3)6.... |
| 0480 | fa 35 3f d6 ca 66 35 4c db 87 8f 8f fb ee b6 db af fe 67 d3 ae ad 95 d5 24 e5 20 2e eb f1 5b 11 | .5?..f5L..........g.....$.....[. |
| 04a0 | d3 77 99 79 75 36 fa 76 31 f5 07 00 e6 0b 04 3a 3f 3e 74 1e e6 d9 ed 4e d7 87 4f e2 b4 2a bb 0d | .w.yu6.v1......:?>t....N..O..*.. |
| 04c0 | bf 56 3a 83 6b 0e b7 a9 7d a5 ae bf 21 f5 97 06 52 6c 75 75 d5 45 de ef b3 5d 75 df a7 7b ff 00 | .V:.k...}...!...Rluu.E...]u..{.. |
| 04e0 | c2 7e 92 a5 95 5d ae b2 d2 e7 ba 4f a6 c8 24 f6 06 c4 f8 cb 66 30 4d d7 e3 e4 d9 6d 65 ef 0d fa | .~...].....O..$.....f0M....me... |
| 0500 | 32 60 93 d9 69 f4 8f aa dd 47 ac 3a e6 63 64 63 56 fa 1c c6 3d b7 b9 cc 25 f6 6f 73 2a 64 07 6e | 2`..i....G.:.cdcV...=...%.os*d.n |
| 0520 | b9 ac ad cf b2 b7 7e 91 66 52 ef d3 d5 e4 f1 a7 cd 68 fd 5d fa cd 91 f5 7a dc b3 89 97 8f 73 72 | ......~.fR.......h.]....z.....sr |
| 0540 | 8d 65 ce c8 c7 ba c1 0c 73 bd 3b 59 e9 d9 53 9a ff 00 4a ef 53 df bf fd 1a 59 0c 80 f4 57 17 4b | .e......s.;Y..S...J.S....Y...W.K |
| 0560 | d9 22 f8 b5 f9 6b 5d 13 f5 5f ab 9f 65 e9 39 39 94 64 62 e7 57 8e ca f2 9d 93 8f cb ab 75 83 11 | ."...k].._..e.99.db.W........u.. |
| 0580 | d5 e3 d8 db 5d bd be ab ac f5 bd 6a 3e 9e 3f fa 45 0b 3e ae 64 39 94 60 b4 54 cc 97 8a 9d 4e 46 | ....]......j>.?.E.>.d9.`.T....NF |
| 05a0 | da eb f5 0e 55 6c c9 c5 c6 df 65 94 3b d5 77 a5 7d 54 ee f5 3d 7b bd 6a eb bf d3 af d1 ae df 52 | ....Ul....e.;.w.}T..={.j.......R |
| 05c0 | fa f3 97 d5 ba 55 dd 2b 2b 27 0b 1f 1b 29 ad 6d be 8e 25 cd 73 46 ec 6b ad 35 fe 9c b3 d9 bf 3b | .....U.++'...).m..%.sF.k.5.....; |
| 05e0 | f3 3f 49 f6 2f fb b9 42 35 1f e3 23 a9 e3 61 d1 8a cc 8c 42 dc 6a 58 c6 07 62 5a 4e ea eb 21 95 | .?I./..B5..#..a....B.jX..bZN..!. |
| 0600 | b9 c7 2b e9 fd a2 af 47 d4 fa 1f e1 ff 00 90 a1 3e ed 6c 2e ff 00 e6 af 1c 20 ec 4e 8e 0f 57 e9 | ..+....G........>.l........N..W. |
| 0620 | 19 9d 2f 2a aa 1e fa f2 1b 91 57 ab 4d 95 4e d2 5b a6 4d 3f 9c df 53 12 c6 be bb 76 39 51 a5 fe | ../*......W.M.N.[.M?..S....v9Q.. |
| 0640 | a3 1a ee 37 00 60 7d eb 5b eb 17 5e 1f 58 33 2b c8 cc ea 32 2a 6b aa 6f a1 8a f6 35 cc 0f c8 b2 | ...7.`}.[..^.X3+...2*k.o...5.... |
| 0660 | 97 bd 8f c8 7f ba d8 c0 ff 00 8a fb 6d 9f f7 0f f4 dc f6 1d ed 2c 6b 49 fa 20 08 53 42 47 4e 2d | ............m........,kI...SBGN- |
| 0680 | e9 1a 92 74 f2 6f 06 93 24 02 e8 d7 49 25 33 5e d2 e8 92 23 e9 92 34 1f 15 11 ba da ae ae a0 6c | ...t.o..$...I%3^...#..4........l |
| 06a0 | b1 ec 01 ac 68 2e 73 bd cc f6 86 b7 dc 89 d4 45 bf b2 fa 39 2c 2d a5 d4 da e6 3c ec 20 bf d4 db | ....h.s........E...9,-....<..... |
| 06c0 | 75 75 ba b2 5f e9 b6 bf b3 5b e9 db f4 32 2f bd 13 2a 34 b4 93 ea ae 8e 97 d5 ff 00 aa 9d 7f eb | uu.._....[...2/..*4............. |
| 06e0 | 3d 76 e4 74 e3 46 36 35 07 d2 36 de e2 d0 e7 80 0b 9b fa 3a ef b1 f6 6d 7b 1f 6b bd 95 fb d6 67 | =v.t.F65..6........:...m{.k....g |
| 0700 | 50 c1 ea 1d 23 a8 dd d3 ba 83 05 79 34 11 bd 80 87 34 b4 8d ed 7d 6f 6f b7 dc c7 6f 6f fd b7 67 | P...#......y4....4...}oo...oo..g |
| 0720 | e9 17 57 f5 1b a8 e6 51 d1 ed 66 57 4a 3d 57 a4 33 20 36 a7 36 da db e9 e4 39 d4 5c 2a b2 8c 9b | ..W....Q..fWJ=W.3.6.6....9.\*... |
| 0740 | 2b 6d 95 3a e6 63 dd 5d bf e0 ac f5 3e 9f aa b9 df ac bd 5f 2f ac f5 dc 8c dc da 46 3d d6 7e 81 | +m.:.c.]....>......_/......F=.~. |
| 0760 | 98 ad 24 fa 6d 6b 76 ed 73 dc d6 ef f4 da f7 59 63 f6 7f 38 f5 10 33 e2 36 3d 3d 14 68 00 45 f1 | ..$.mkv.s......Yc..8..3.6==.h.E. |
| 0780 | 17 ff d0 e6 fa 2f 54 b7 04 3d be 9e 3d d8 d7 58 ca ef 66 5d 46 fa 00 7c 1f b4 dd 8b 59 6b ae 76 | ...../T..=..=..X..f]F..|....Yk.v |
| 07a0 | 3f a2 cf 45 ff 00 e0 7f 49 fe 91 75 78 9f 5a df d3 fa 76 7e 47 4c b3 a4 b6 d6 0a 8f a9 5e 35 d8 | ?..E....I..ux.Z...v~GL.......^5. |
| 07c0 | ec dc 4d c7 d1 c8 75 96 b9 f7 d9 73 2a 7f d9 76 d9 fa 3f f8 35 c1 7b f6 96 87 39 a3 42 76 92 3e | ..M...u....s*..v..?.5.{...9.Bv.> |
| 07e0 | fd ab 47 0b 1e dc ee 95 9b d3 19 68 39 37 d9 4d b4 32 e7 18 22 86 df 76 43 45 84 39 8c fd 17 fa | ..G........h97.M.2.."..vCE.9.... |
| 0800 | 47 33 7a 9a 70 04 f1 1e 8d 79 99 c7 63 40 ce 1f 67 14 78 9b 16 f5 7c 41 d3 73 1c c6 61 b3 2f 2a | G3z.p....y..c@..g.x...|A.s..a./* |
| 0820 | bc 6b 32 31 aa 2e 65 0f fd 23 6c 7f a1 8c df 6b 33 b1 db 67 d9 fa 8e 1b be 9d 7f ae d7 fe 17 d4 | .k21..e..#l....k3..g............ |
| 0840 | cf cc 66 1e 4f 55 b2 cf b4 e2 50 cb 32 0e 30 7b 4b b6 36 ba da dd 99 ee fb 35 54 54 ea 32 ad 2e | ..f.OU....P.2.0{K.6......5TT.2.. |
| 0860 | f7 53 8f 47 e9 bf c0 54 a9 5b d2 73 59 4b f2 0e d7 35 98 ec cc 76 d7 4b bd 3b de dc 6a 99 b7 fe | .S.G...T.[.sYK...5...v.K.;..j... |
| 0880 | e4 ef 7f e9 6b ff 00 42 8c 7e ad 75 4f b5 0c 39 a7 d4 39 27 02 7d 41 b4 5a c0 2d b2 c7 38 8f e8 | ....k..B.~.uO..9..9'.}A.Z.-..8.. |
| 08a0 | fb 0f f3 89 a0 0b be be 6b c4 62 05 71 57 d7 56 15 fa 7e 98 b7 d7 a9 b6 7a 0e bc 52 ed e5 de ab | ........k.b.qW.V..~.....z..R.... |
| 08c0 | 6c f4 46 0f fe 19 b1 9f ac 57 fe 0f d3 4e 29 e9 cd c8 73 0d 81 f4 b6 00 b0 5a 61 cd 70 dd 5b c4 | l.F......W...N)...s......Za.p.[. |
| 08e0 | 30 3b 65 0d af ec f9 1f f0 ca 15 f4 9c cb 2a 65 e4 b1 95 3e 87 e6 92 e2 64 32 bb 0e 21 ad cd 6b | 0;e...........*e...>....d2..!..k |
| 0900 | 77 7a fe a3 77 ec ff 00 44 89 fb 0b 39 97 7d 9d cf a3 70 7e 3e 2e ed e3 68 76 5b 4d f5 db be 3f | wz..w...D...9.}...p~>...hv[M...? |
| 0920 | 98 c7 68 d9 95 f9 95 58 9d 6a b8 fe f7 e2 8d b5 61 b7 6e f2 d7 18 78 7e d7 9d 4b 1b 5f b6 7d 3f | ..h....X.j......a.n...x~..K._.}? |
| 0940 | 6f db 9a dc bf b1 bf fe ec 51 fe 81 42 c1 85 e8 bd cd 70 75 a2 a6 3d a0 6e 1b ac 70 fd 35 2d 1b | o........Q..B.....pu..=.n..p.5-. |
| 0960 | 76 b5 d8 97 5b eb 3f f3 2d ae b5 68 f4 3c a9 68 7d b4 b7 79 c8 83 b8 11 fa 8b 77 59 a0 ff 00 b9 | v...[.?.-..h.<.h}..y......wY.... |
| 0980 | 4f f6 e1 7e fb d0 ad e8 d7 33 1d f7 3a fa 9f e9 e3 55 97 b1 8e 97 3b d7 2c a8 63 56 d1 ff 00 6a | O..~.....3..:....U....;.,.cV...j |
| 09a0 | b1 b7 ef c9 ab f3 3d 3b 12 25 3c 51 fd e5 01 d2 bd 4b 43 6c 15 b5 b6 3b d2 73 9c f8 35 02 e7 57 | ......=;.%<Q.....KCl...;.s..5..W |
| 09c0 | 67 f3 7b 9d bf f5 76 6d ff 00 ba f6 6f fe 90 a1 d2 86 25 1e 99 be f6 34 16 39 f6 34 d0 6c 73 6c | g.{...vm....o.....%....4.9.4.lsl |
| 09e0 | 6b 8b 59 8a d7 6f 6f be da bf 4b ea ff 00 83 48 f4 7b 85 9e 91 ba a1 fa 73 8c e7 97 12 06 d8 77 | k.Y..oo...K....H.{......s......w |
| 0a00 | da a5 bf 4f 16 cf cd b1 41 b8 17 96 36 d7 39 80 3e a7 64 06 49 2e 05 8e 75 3f 65 b1 a1 bf a3 ca | ...O....A...6.9.>.d.I...u?e..... |
| 0a20 | 7e cf 56 bd df e0 7d 34 0f 8a 8c a0 45 71 02 9f 22 fa f1 ac b7 23 07 28 5a d6 36 a0 c6 9a 88 65 | ~.V...}4....Eq.."....#.(Z.6....e |
| 0a40 | a1 ec fd 75 ee aa cf 6d 6d aa df d1 be bf f4 96 7e 89 68 65 d5 9f 7e 07 4e 6f 53 cb a9 a6 e2 fb | ...u...mm.......~.he..~.NoS..... |
| 0a60 | b0 da d6 3b 7d 9f 6b 7b 6d cc 75 96 6c 6d 7e a3 1f e8 6c f4 d9 f6 6d f6 7a 5f 68 f5 28 c9 f4 b2 | ...;}.k{m.u.lm~...l...m.z_h.(... |
| 0a80 | b2 7a 5e 45 54 5d fa 4a ad f4 db 4e d1 5b b5 78 c8 67 ae ef 4f 8d df 64 db e8 66 37 fc 1d e8 d5 | .z^ET].J...N.[.x.g..O..d..f7.... |
| 0aa0 | e5 75 4c a3 d3 e9 ca 04 d5 84 e6 b6 a9 6c 6d 69 75 65 db 9c ef cd db 5b 3d 9f cd 33 f7 3d 4b 2e | .uL..........lmiue.....[=..3.=K. |
| 0ac0 | 7d 8d 20 f1 44 e9 e3 dd 69 94 04 48 12 1f 6a 61 87 d3 6b 07 d6 c8 cb 0d 22 69 fb 3b 2b b3 de 36 | }...D...i..H..ja..k....."i.;+..6 |
| 0ae0 | fa fe b4 db 4f a7 b3 73 58 cd 9f ce 7f 51 51 7b 36 e5 d6 e6 6f 75 64 b8 07 da 00 71 f6 37 76 fd | ....O..sX....QQ{6...oud....q.7v. |
| 0b00 | ae 7f e7 2b 9d 5e a3 e9 e1 82 01 1e b5 93 f4 07 66 f2 28 96 f6 40 15 b4 38 10 04 a7 c4 5e b6 b7 | ...+.^..........f.(..@..8....^.. |
| 0b20 | 16 b1 12 b1 d7 a3 ff d1 e2 87 6f 82 6b bf 98 77 d3 e4 7d 0f a3 ff 00 5c ff 00 be ac 04 95 93 b3 | ..........o.k..w..}....\........ |
| 0b40 | 14 b6 fb 1d 5e fd f9 3f 1f fc ed 33 7e 8f f6 7b 71 cf fd 42 cb 49 31 1d 1d 61 f3 fa 43 9e 7f f3 | ....^..?...3~..{q..B.I1..a..C... |
| 0b60 | b4 cd fa 43 8e 1c b2 92 45 2e a3 7b ff 00 67 94 e3 9f 9f 7f f5 fa 4b 29 24 82 5d 4f cd 3f 47 bf | ...C....E..{..g.......K)$.]O.?G. |
| 0b80 | 3c 24 7e 91 fa 3f da 59 69 22 b8 3a 63 fe b7 df e2 9f fc cf 9f 0b 2d 24 92 ec 55 cb 7e 87 1f 9b | <$~..?.Yi".:c.........-$..U.~... |
| 0ba0 | ff 00 7e 56 3f 3b b7 2b 9f 49 10 b4 bf ff d9 00 38 42 49 4d 04 06 00 00 00 00 00 07 00 01 00 01 | ..~V?;.+.I......8BIM............ |
| 0bc0 | 00 01 01 00 ff e2 0c 58 49 43 43 5f 50 52 4f 46 49 4c 45 00 01 01 00 00 0c 48 4c 69 6e 6f 02 10 | .......XICC_PROFILE......HLino.. |
| 0be0 | 00 00 6d 6e 74 72 52 47 42 20 58 59 5a 20 07 ce 00 02 00 09 00 06 00 31 00 00 61 63 73 70 4d 53 | ..mntrRGB.XYZ..........1..acspMS |
| 0c00 | 46 54 00 00 00 00 49 45 43 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f6 d6 00 01 | FT....IEC.sRGB.................. |
| 0c20 | 00 00 00 00 d3 2d 48 50 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .....-HP........................ |
| 0c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 63 70 72 74 00 00 | ..........................cprt.. |
| 0c60 | 01 50 00 00 00 33 64 65 73 63 00 00 01 84 00 00 00 6c 77 74 70 74 00 00 01 f0 00 00 00 14 62 6b | .P...3desc.......lwtpt........bk |
| 0c80 | 70 74 00 00 02 04 00 00 00 14 72 58 59 5a 00 00 02 18 00 00 00 14 67 58 59 5a 00 00 02 2c 00 00 | pt........rXYZ........gXYZ...,.. |
| 0ca0 | 00 14 62 58 59 5a 00 00 02 40 00 00 00 14 64 6d 6e 64 00 00 02 54 00 00 00 70 64 6d 64 64 00 00 | ..bXYZ...@....dmnd...T...pdmdd.. |
| 0cc0 | 02 c4 00 00 00 88 76 75 65 64 00 00 03 4c 00 00 00 86 76 69 65 77 00 00 03 d4 00 00 00 24 6c 75 | ......vued...L....view.......$lu |
| 0ce0 | 6d 69 00 00 03 f8 00 00 00 14 6d 65 61 73 00 00 04 0c 00 00 00 24 74 65 63 68 00 00 04 30 00 00 | mi........meas.......$tech...0.. |
| 0d00 | 00 0c 72 54 52 43 00 00 04 3c 00 00 08 0c 67 54 52 43 00 00 04 3c 00 00 08 0c 62 54 52 43 00 00 | ..rTRC...<....gTRC...<....bTRC.. |
| 0d20 | 04 3c 00 00 08 0c 74 65 78 74 00 00 00 00 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 38 | .<....text....Copyright.(c).1998 |
| 0d40 | 20 48 65 77 6c 65 74 74 2d 50 61 63 6b 61 72 64 20 43 6f 6d 70 61 6e 79 00 00 64 65 73 63 00 00 | .Hewlett-Packard.Company..desc.. |
| 0d60 | 00 00 00 00 00 12 73 52 47 42 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 | ......sRGB.IEC61966-2.1......... |
| 0d80 | 00 00 12 73 52 47 42 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 00 00 00 | ...sRGB.IEC61966-2.1............ |
| 0da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0dc0 | 00 00 00 00 00 00 58 59 5a 20 00 00 00 00 00 00 f3 51 00 01 00 00 00 01 16 cc 58 59 5a 20 00 00 | ......XYZ........Q........XYZ... |
| 0de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 59 5a 20 00 00 00 00 00 00 6f a2 00 00 38 f5 00 00 | ..............XYZ.......o...8... |
| 0e00 | 03 90 58 59 5a 20 00 00 00 00 00 00 62 99 00 00 b7 85 00 00 18 da 58 59 5a 20 00 00 00 00 00 00 | ..XYZ.......b.........XYZ....... |
| 0e20 | 24 a0 00 00 0f 84 00 00 b6 cf 64 65 73 63 00 00 00 00 00 00 00 16 49 45 43 20 68 74 74 70 3a 2f | $.........desc........IEC.http:/ |
| 0e40 | 2f 77 77 77 2e 69 65 63 2e 63 68 00 00 00 00 00 00 00 00 00 00 00 16 49 45 43 20 68 74 74 70 3a | /www.iec.ch............IEC.http: |
| 0e60 | 2f 2f 77 77 77 2e 69 65 63 2e 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | //www.iec.ch.................... |
| 0e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 65 73 63 00 00 | ..........................desc.. |
| 0ea0 | 00 00 00 00 00 2e 49 45 43 20 36 31 39 36 36 2d 32 2e 31 20 44 65 66 61 75 6c 74 20 52 47 42 20 | ......IEC.61966-2.1.Default.RGB. |
| 0ec0 | 63 6f 6c 6f 75 72 20 73 70 61 63 65 20 2d 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 2e 49 | colour.space.-.sRGB............I |
| 0ee0 | 45 43 20 36 31 39 36 36 2d 32 2e 31 20 44 65 66 61 75 6c 74 20 52 47 42 20 63 6f 6c 6f 75 72 20 | EC.61966-2.1.Default.RGB.colour. |
| 0f00 | 73 70 61 63 65 20 2d 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | space.-.sRGB.................... |
| 0f20 | 00 00 64 65 73 63 00 00 00 00 00 00 00 2c 52 65 66 65 72 65 6e 63 65 20 56 69 65 77 69 6e 67 20 | ..desc.......,Reference.Viewing. |
| 0f40 | 43 6f 6e 64 69 74 69 6f 6e 20 69 6e 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 | Condition.in.IEC61966-2.1....... |
| 0f60 | 00 00 00 00 2c 52 65 66 65 72 65 6e 63 65 20 56 69 65 77 69 6e 67 20 43 6f 6e 64 69 74 69 6f 6e | ....,Reference.Viewing.Condition |
| 0f80 | 20 69 6e 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .in.IEC61966-2.1................ |
| 0fa0 | 00 00 00 00 00 00 00 00 00 00 76 69 65 77 00 00 00 00 00 13 a4 fe 00 14 5f 2e 00 10 cf 14 00 03 | ..........view.........._....... |
| 0fc0 | ed cc 00 04 13 0b 00 03 5c 9e 00 00 00 01 58 59 5a 20 00 00 00 00 00 4c 09 56 00 50 00 00 00 57 | ........\.....XYZ......L.V.P...W |
| 0fe0 | 1f e7 6d 65 61 73 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..meas.......................... |
| 1000 | 02 8f 00 00 00 02 73 69 67 20 00 00 00 00 43 52 54 20 63 75 72 76 00 00 00 00 00 00 04 00 00 00 | ......sig.....CRT.curv.......... |
| 1020 | 00 05 00 0a 00 0f 00 14 00 19 00 1e 00 23 00 28 00 2d 00 32 00 37 00 3b 00 40 00 45 00 4a 00 4f | .............#.(.-.2.7.;.@.E.J.O |
| 1040 | 00 54 00 59 00 5e 00 63 00 68 00 6d 00 72 00 77 00 7c 00 81 00 86 00 8b 00 90 00 95 00 9a 00 9f | .T.Y.^.c.h.m.r.w.|.............. |
| 1060 | 00 a4 00 a9 00 ae 00 b2 00 b7 00 bc 00 c1 00 c6 00 cb 00 d0 00 d5 00 db 00 e0 00 e5 00 eb 00 f0 | ................................ |
| 1080 | 00 f6 00 fb 01 01 01 07 01 0d 01 13 01 19 01 1f 01 25 01 2b 01 32 01 38 01 3e 01 45 01 4c 01 52 | .................%.+.2.8.>.E.L.R |
| 10a0 | 01 59 01 60 01 67 01 6e 01 75 01 7c 01 83 01 8b 01 92 01 9a 01 a1 01 a9 01 b1 01 b9 01 c1 01 c9 | .Y.`.g.n.u.|.................... |
| 10c0 | 01 d1 01 d9 01 e1 01 e9 01 f2 01 fa 02 03 02 0c 02 14 02 1d 02 26 02 2f 02 38 02 41 02 4b 02 54 | .....................&./.8.A.K.T |
| 10e0 | 02 5d 02 67 02 71 02 7a 02 84 02 8e 02 98 02 a2 02 ac 02 b6 02 c1 02 cb 02 d5 02 e0 02 eb 02 f5 | .].g.q.z........................ |
| 1100 | 03 00 03 0b 03 16 03 21 03 2d 03 38 03 43 03 4f 03 5a 03 66 03 72 03 7e 03 8a 03 96 03 a2 03 ae | .......!.-.8.C.O.Z.f.r.~........ |
| 1120 | 03 ba 03 c7 03 d3 03 e0 03 ec 03 f9 04 06 04 13 04 20 04 2d 04 3b 04 48 04 55 04 63 04 71 04 7e | ...................-.;.H.U.c.q.~ |
| 1140 | 04 8c 04 9a 04 a8 04 b6 04 c4 04 d3 04 e1 04 f0 04 fe 05 0d 05 1c 05 2b 05 3a 05 49 05 58 05 67 | .......................+.:.I.X.g |
| 1160 | 05 77 05 86 05 96 05 a6 05 b5 05 c5 05 d5 05 e5 05 f6 06 06 06 16 06 27 06 37 06 48 06 59 06 6a | .w.....................'.7.H.Y.j |
| 1180 | 06 7b 06 8c 06 9d 06 af 06 c0 06 d1 06 e3 06 f5 07 07 07 19 07 2b 07 3d 07 4f 07 61 07 74 07 86 | .{...................+.=.O.a.t.. |
| 11a0 | 07 99 07 ac 07 bf 07 d2 07 e5 07 f8 08 0b 08 1f 08 32 08 46 08 5a 08 6e 08 82 08 96 08 aa 08 be | .................2.F.Z.n........ |
| 11c0 | 08 d2 08 e7 08 fb 09 10 09 25 09 3a 09 4f 09 64 09 79 09 8f 09 a4 09 ba 09 cf 09 e5 09 fb 0a 11 | .........%.:.O.d.y.............. |
| 11e0 | 0a 27 0a 3d 0a 54 0a 6a 0a 81 0a 98 0a ae 0a c5 0a dc 0a f3 0b 0b 0b 22 0b 39 0b 51 0b 69 0b 80 | .'.=.T.j...............".9.Q.i.. |
| 1200 | 0b 98 0b b0 0b c8 0b e1 0b f9 0c 12 0c 2a 0c 43 0c 5c 0c 75 0c 8e 0c a7 0c c0 0c d9 0c f3 0d 0d | .............*.C.\.u............ |
| 1220 | 0d 26 0d 40 0d 5a 0d 74 0d 8e 0d a9 0d c3 0d de 0d f8 0e 13 0e 2e 0e 49 0e 64 0e 7f 0e 9b 0e b6 | .&.@.Z.t...............I.d...... |
| 1240 | 0e d2 0e ee 0f 09 0f 25 0f 41 0f 5e 0f 7a 0f 96 0f b3 0f cf 0f ec 10 09 10 26 10 43 10 61 10 7e | .......%.A.^.z...........&.C.a.~ |
| 1260 | 10 9b 10 b9 10 d7 10 f5 11 13 11 31 11 4f 11 6d 11 8c 11 aa 11 c9 11 e8 12 07 12 26 12 45 12 64 | ...........1.O.m...........&.E.d |
| 1280 | 12 84 12 a3 12 c3 12 e3 13 03 13 23 13 43 13 63 13 83 13 a4 13 c5 13 e5 14 06 14 27 14 49 14 6a | ...........#.C.c...........'.I.j |
| 12a0 | 14 8b 14 ad 14 ce 14 f0 15 12 15 34 15 56 15 78 15 9b 15 bd 15 e0 16 03 16 26 16 49 16 6c 16 8f | ...........4.V.x.........&.I.l.. |
| 12c0 | 16 b2 16 d6 16 fa 17 1d 17 41 17 65 17 89 17 ae 17 d2 17 f7 18 1b 18 40 18 65 18 8a 18 af 18 d5 | .........A.e...........@.e...... |
| 12e0 | 18 fa 19 20 19 45 19 6b 19 91 19 b7 19 dd 1a 04 1a 2a 1a 51 1a 77 1a 9e 1a c5 1a ec 1b 14 1b 3b | .....E.k.........*.Q.w.........; |
| 1300 | 1b 63 1b 8a 1b b2 1b da 1c 02 1c 2a 1c 52 1c 7b 1c a3 1c cc 1c f5 1d 1e 1d 47 1d 70 1d 99 1d c3 | .c.........*.R.{.........G.p.... |
| 1320 | 1d ec 1e 16 1e 40 1e 6a 1e 94 1e be 1e e9 1f 13 1f 3e 1f 69 1f 94 1f bf 1f ea 20 15 20 41 20 6c | .....@.j.........>.i.........A.l |
| 1340 | 20 98 20 c4 20 f0 21 1c 21 48 21 75 21 a1 21 ce 21 fb 22 27 22 55 22 82 22 af 22 dd 23 0a 23 38 | ......!.!H!u!.!.!."'"U".".".#.#8 |
| 1360 | 23 66 23 94 23 c2 23 f0 24 1f 24 4d 24 7c 24 ab 24 da 25 09 25 38 25 68 25 97 25 c7 25 f7 26 27 | #f#.#.#.$.$M$|$.$.%.%8%h%.%.%.&' |
| 1380 | 26 57 26 87 26 b7 26 e8 27 18 27 49 27 7a 27 ab 27 dc 28 0d 28 3f 28 71 28 a2 28 d4 29 06 29 38 | &W&.&.&.'.'I'z'.'.(.(?(q(.(.).)8 |
| 13a0 | 29 6b 29 9d 29 d0 2a 02 2a 35 2a 68 2a 9b 2a cf 2b 02 2b 36 2b 69 2b 9d 2b d1 2c 05 2c 39 2c 6e | )k).).*.*5*h*.*.+.+6+i+.+.,.,9,n |
| 13c0 | 2c a2 2c d7 2d 0c 2d 41 2d 76 2d ab 2d e1 2e 16 2e 4c 2e 82 2e b7 2e ee 2f 24 2f 5a 2f 91 2f c7 | ,.,.-.-A-v-.-....L....../$/Z/./. |
| 13e0 | 2f fe 30 35 30 6c 30 a4 30 db 31 12 31 4a 31 82 31 ba 31 f2 32 2a 32 63 32 9b 32 d4 33 0d 33 46 | /.050l0.0.1.1J1.1.1.2*2c2.2.3.3F |
| 1400 | 33 7f 33 b8 33 f1 34 2b 34 65 34 9e 34 d8 35 13 35 4d 35 87 35 c2 35 fd 36 37 36 72 36 ae 36 e9 | 3.3.3.4+4e4.4.5.5M5.5.5.676r6.6. |
| 1420 | 37 24 37 60 37 9c 37 d7 38 14 38 50 38 8c 38 c8 39 05 39 42 39 7f 39 bc 39 f9 3a 36 3a 74 3a b2 | 7$7`7.7.8.8P8.8.9.9B9.9.9.:6:t:. |
| 1440 | 3a ef 3b 2d 3b 6b 3b aa 3b e8 3c 27 3c 65 3c a4 3c e3 3d 22 3d 61 3d a1 3d e0 3e 20 3e 60 3e a0 | :.;-;k;.;.<'<e<.<.="=a=.=.>.>`>. |
| 1460 | 3e e0 3f 21 3f 61 3f a2 3f e2 40 23 40 64 40 a6 40 e7 41 29 41 6a 41 ac 41 ee 42 30 42 72 42 b5 | >.?!?a?.?.@#@d@.@.A)AjA.A.B0BrB. |
| 1480 | 42 f7 43 3a 43 7d 43 c0 44 03 44 47 44 8a 44 ce 45 12 45 55 45 9a 45 de 46 22 46 67 46 ab 46 f0 | B.C:C}C.D.DGD.D.E.EUE.E.F"FgF.F. |
| 14a0 | 47 35 47 7b 47 c0 48 05 48 4b 48 91 48 d7 49 1d 49 63 49 a9 49 f0 4a 37 4a 7d 4a c4 4b 0c 4b 53 | G5G{G.H.HKH.H.I.IcI.I.J7J}J.K.KS |
| 14c0 | 4b 9a 4b e2 4c 2a 4c 72 4c ba 4d 02 4d 4a 4d 93 4d dc 4e 25 4e 6e 4e b7 4f 00 4f 49 4f 93 4f dd | K.K.L*LrL.M.MJM.M.N%NnN.O.OIO.O. |
| 14e0 | 50 27 50 71 50 bb 51 06 51 50 51 9b 51 e6 52 31 52 7c 52 c7 53 13 53 5f 53 aa 53 f6 54 42 54 8f | P'PqP.Q.QPQ.Q.R1R|R.S.S_S.S.TBT. |
| 1500 | 54 db 55 28 55 75 55 c2 56 0f 56 5c 56 a9 56 f7 57 44 57 92 57 e0 58 2f 58 7d 58 cb 59 1a 59 69 | T.U(UuU.V.V\V.V.WDW.W.X/X}X.Y.Yi |
| 1520 | 59 b8 5a 07 5a 56 5a a6 5a f5 5b 45 5b 95 5b e5 5c 35 5c 86 5c d6 5d 27 5d 78 5d c9 5e 1a 5e 6c | Y.Z.ZVZ.Z.[E[.[.\5\.\.]']x].^.^l |
| 1540 | 5e bd 5f 0f 5f 61 5f b3 60 05 60 57 60 aa 60 fc 61 4f 61 a2 61 f5 62 49 62 9c 62 f0 63 43 63 97 | ^._._a_.`.`W`.`.aOa.a.bIb.b.cCc. |
| 1560 | 63 eb 64 40 64 94 64 e9 65 3d 65 92 65 e7 66 3d 66 92 66 e8 67 3d 67 93 67 e9 68 3f 68 96 68 ec | c.d@d.d.e=e.e.f=f.f.g=g.g.h?h.h. |
| 1580 | 69 43 69 9a 69 f1 6a 48 6a 9f 6a f7 6b 4f 6b a7 6b ff 6c 57 6c af 6d 08 6d 60 6d b9 6e 12 6e 6b | iCi.i.jHj.j.kOk.k.lWl.m.m`m.n.nk |
| 15a0 | 6e c4 6f 1e 6f 78 6f d1 70 2b 70 86 70 e0 71 3a 71 95 71 f0 72 4b 72 a6 73 01 73 5d 73 b8 74 14 | n.o.oxo.p+p.p.q:q.q.rKr.s.s]s.t. |
| 15c0 | 74 70 74 cc 75 28 75 85 75 e1 76 3e 76 9b 76 f8 77 56 77 b3 78 11 78 6e 78 cc 79 2a 79 89 79 e7 | tpt.u(u.u.v>v.v.wVw.x.xnx.y*y.y. |
| 15e0 | 7a 46 7a a5 7b 04 7b 63 7b c2 7c 21 7c 81 7c e1 7d 41 7d a1 7e 01 7e 62 7e c2 7f 23 7f 84 7f e5 | zFz.{.{c{.|!|.|.}A}.~.~b~..#.... |
| 1600 | 80 47 80 a8 81 0a 81 6b 81 cd 82 30 82 92 82 f4 83 57 83 ba 84 1d 84 80 84 e3 85 47 85 ab 86 0e | .G.....k...0.....W.........G.... |
| 1620 | 86 72 86 d7 87 3b 87 9f 88 04 88 69 88 ce 89 33 89 99 89 fe 8a 64 8a ca 8b 30 8b 96 8b fc 8c 63 | .r...;.....i...3.....d...0.....c |
| 1640 | 8c ca 8d 31 8d 98 8d ff 8e 66 8e ce 8f 36 8f 9e 90 06 90 6e 90 d6 91 3f 91 a8 92 11 92 7a 92 e3 | ...1.....f...6.....n...?.....z.. |
| 1660 | 93 4d 93 b6 94 20 94 8a 94 f4 95 5f 95 c9 96 34 96 9f 97 0a 97 75 97 e0 98 4c 98 b8 99 24 99 90 | .M........._...4.....u...L...$.. |
| 1680 | 99 fc 9a 68 9a d5 9b 42 9b af 9c 1c 9c 89 9c f7 9d 64 9d d2 9e 40 9e ae 9f 1d 9f 8b 9f fa a0 69 | ...h...B.........d...@.........i |
| 16a0 | a0 d8 a1 47 a1 b6 a2 26 a2 96 a3 06 a3 76 a3 e6 a4 56 a4 c7 a5 38 a5 a9 a6 1a a6 8b a6 fd a7 6e | ...G...&.....v...V...8.........n |
| 16c0 | a7 e0 a8 52 a8 c4 a9 37 a9 a9 aa 1c aa 8f ab 02 ab 75 ab e9 ac 5c ac d0 ad 44 ad b8 ae 2d ae a1 | ...R...7.........u...\...D...-.. |
| 16e0 | af 16 af 8b b0 00 b0 75 b0 ea b1 60 b1 d6 b2 4b b2 c2 b3 38 b3 ae b4 25 b4 9c b5 13 b5 8a b6 01 | .......u...`...K...8...%........ |
| 1700 | b6 79 b6 f0 b7 68 b7 e0 b8 59 b8 d1 b9 4a b9 c2 ba 3b ba b5 bb 2e bb a7 bc 21 bc 9b bd 15 bd 8f | .y...h...Y...J...;.......!...... |
| 1720 | be 0a be 84 be ff bf 7a bf f5 c0 70 c0 ec c1 67 c1 e3 c2 5f c2 db c3 58 c3 d4 c4 51 c4 ce c5 4b | .......z...p...g..._...X...Q...K |
| 1740 | c5 c8 c6 46 c6 c3 c7 41 c7 bf c8 3d c8 bc c9 3a c9 b9 ca 38 ca b7 cb 36 cb b6 cc 35 cc b5 cd 35 | ...F...A...=...:...8...6...5...5 |
| 1760 | cd b5 ce 36 ce b6 cf 37 cf b8 d0 39 d0 ba d1 3c d1 be d2 3f d2 c1 d3 44 d3 c6 d4 49 d4 cb d5 4e | ...6...7...9...<...?...D...I...N |
| 1780 | d5 d1 d6 55 d6 d8 d7 5c d7 e0 d8 64 d8 e8 d9 6c d9 f1 da 76 da fb db 80 dc 05 dc 8a dd 10 dd 96 | ...U...\...d...l...v............ |
| 17a0 | de 1c de a2 df 29 df af e0 36 e0 bd e1 44 e1 cc e2 53 e2 db e3 63 e3 eb e4 73 e4 fc e5 84 e6 0d | .....)...6...D...S...c...s...... |
| 17c0 | e6 96 e7 1f e7 a9 e8 32 e8 bc e9 46 e9 d0 ea 5b ea e5 eb 70 eb fb ec 86 ed 11 ed 9c ee 28 ee b4 | .......2...F...[...p.........(.. |
| 17e0 | ef 40 ef cc f0 58 f0 e5 f1 72 f1 ff f2 8c f3 19 f3 a7 f4 34 f4 c2 f5 50 f5 de f6 6d f6 fb f7 8a | .@...X...r.........4...P...m.... |
| 1800 | f8 19 f8 a8 f9 38 f9 c7 fa 57 fa e7 fb 77 fc 07 fc 98 fd 29 fd ba fe 4b fe dc ff 6d ff ff ff fe | .....8...W...w.....)...K...m.... |
| 1820 | 00 26 46 69 6c 65 20 77 72 69 74 74 65 6e 20 62 79 20 41 64 6f 62 65 20 50 68 6f 74 6f 73 68 6f | .&File.written.by.Adobe.Photosho |
| 1840 | 70 a8 20 35 2e 30 ff ee 00 0e 41 64 6f 62 65 00 64 80 00 00 00 01 ff db 00 84 00 0c 08 08 08 09 | p..5.0....Adobe.d............... |
| 1860 | 08 0c 09 09 0c 11 0b 0a 0b 11 15 0f 0c 0c 0f 15 18 13 13 15 13 13 18 11 0c 0c 0c 0c 0c 0c 11 0c | ................................ |
| 1880 | 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 01 0d 0b 0b 0d | ................................ |
| 18a0 | 0e 0d 10 0e 0e 10 14 0e 0e 0e 14 14 0e 0e 0e 0e 14 11 0c 0c 0c 0c 0c 11 11 0c 0c 0c 0c 0c 0c 11 | ................................ |
| 18c0 | 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c ff c0 00 11 | ................................ |
| 18e0 | 08 00 f4 03 1a 03 01 22 00 02 11 01 03 11 01 ff dd 00 04 00 32 ff c4 00 c3 00 00 01 05 01 01 01 | ......."............2........... |
| 1900 | 00 00 00 00 00 00 00 00 00 00 04 01 02 03 05 06 00 07 08 01 00 03 01 01 01 00 00 00 00 00 00 00 | ................................ |
| 1920 | 00 00 00 00 00 01 02 03 04 05 10 00 02 01 02 04 03 05 03 06 09 0a 03 07 03 02 07 01 02 03 00 11 | ................................ |
| 1940 | 21 12 04 05 31 22 13 41 51 32 42 06 61 52 62 71 72 82 23 14 07 f0 81 91 a1 92 a2 33 43 15 b1 c1 | !...1".AQ2B.aRbqr.#........3C... |
| 1960 | b2 c2 d2 e2 f2 53 63 24 d1 83 93 e1 73 a3 d3 34 25 16 f1 b3 17 c3 44 54 e3 64 74 84 26 94 11 00 | .....Sc$....s..4%.....DT.dt.&... |
| 1980 | 01 03 01 05 03 07 0a 06 03 01 01 01 01 00 00 01 00 11 02 21 f0 31 41 12 03 51 61 22 71 81 91 a1 | ...................!.1A..Qa"q... |
| 19a0 | 32 52 13 b1 c1 d1 42 62 72 82 a2 c2 04 f1 92 b2 d2 e2 14 e1 f2 33 23 53 73 24 ff da 00 0c 03 01 | 2R....Bbr............3#Ss$...... |
| 19c0 | 00 02 11 03 11 00 3f 00 c4 b8 b9 19 b8 81 6c 3b 69 64 2c 56 c9 81 24 5c 9c 2d 4d 8f 13 95 40 bb | ......?.......l;id,V..$\.-M...@. |
| 19e0 | 1b 10 70 c4 f6 d3 b5 09 22 c8 56 5e 56 46 e6 50 46 27 d9 6a ea c1 66 b9 84 aa 97 c7 94 da fc 32 | ..p.....".V^VF.PF'.j..f........2 |
| 1a00 | 8f 73 e9 53 95 2c a4 b1 ba 9f 19 ef ee cb 51 dd af 89 20 5e c3 b8 9a 59 0c 64 0e 3c 73 22 9f eb | .s.S.,........Q....^...Y.d.<s".. |
| 1a20 | 5a 84 26 97 ca 02 86 0d 6c 2f ec f7 69 c5 4b 15 8c 11 22 fb dd b8 79 e9 82 44 16 60 96 17 b0 3d | Z.&.....l/..i.K..."...y..D.`...= |
| 1a40 | a5 81 f1 53 43 13 73 6c ae 78 df bb dd cd 45 bd 54 d3 ad cc 32 8b 9b f0 b1 c7 e7 57 48 19 5f 31 | ...SC.sl.x....E.T...2......WH._1 |
| 1a60 | e6 1c 6e 2d c3 b7 fb 54 d3 21 b9 cb c8 17 b6 f8 df de ae 56 70 a0 20 c5 8e 24 f6 5a 95 ad 24 27 | ..n-...T.!.........Vp....$.Z..$' |
| 1a80 | 14 77 36 61 8f f3 76 0f a3 48 c0 73 0b 58 0b 5d 47 1b 7c b4 aa 4b 31 90 61 8d 8a f7 fc 54 84 ca | .w6a..v..H.s.X.]G.|..K1.a....T.. |
| 1aa0 | 5b 97 94 f1 b9 e0 7e 1a 2d 72 14 8a 49 2a 8c b6 6b 63 7f e5 34 c9 02 96 39 b1 50 30 b6 23 0f 2f | [.....~.-r..I*..kc..4...9.P0.#./ |
| 1ac0 | e9 53 6e 14 31 67 38 f1 17 c7 e6 53 43 32 a8 c8 b6 63 7c c0 7f 4b f4 68 42 72 a9 27 3b 10 18 63 | .Sn.1g8....SC2...c|..K.hBr.';..c |
| 1ae0 | 97 de f6 63 5c 4b 06 26 e2 fe 62 07 1f 7b f5 69 a0 13 1f 7a f1 0d f8 7b b4 e2 dc c0 2d d9 47 87 | ...c\K.&..b..{.i...z...{....-.G. |
| 1b00 | e5 f7 8d 0c 84 ad 98 10 4b 60 05 bd a4 76 f1 ae 00 31 17 7c bd cd d9 49 70 cf 60 2e 7b 07 60 35 | ........K`...v...1.|...Ip.`.{.`5 |
| 1b20 | c3 21 2e 15 6f 6e 24 9b 58 77 51 6b 65 42 90 b9 5e 52 c0 93 c1 f8 db e1 fa 54 e5 73 98 0c a0 5b | .!..on$.XwQkeB..^R.......T.s...[ |
| 1b40 | 0c 6a 3c c9 e0 55 b8 ed 1f 27 9a 9d 96 ca a4 1b 96 bd ef ff 00 0a 2d b3 f8 a1 38 92 42 b3 2f 2d | .j<..U...'............-...8.B./- |
| 1b60 | fc 3c 3f 46 d4 ad 81 00 b5 89 3c c7 b0 1e fa 6a 3b 5f 06 cf 27 6b ff 00 52 9a 72 91 65 17 b7 61 | .<?F......<....j;_..'k..R.r.e..a |
| 1b80 | 18 9a 75 45 54 88 c1 41 e5 cc 2f 70 7b 7f 3f 96 96 4b 36 25 73 5c 76 71 a4 42 6d cc 6c 2c 09 03 | ..uET..A../p{.?..K6%s\vq.Bm.l,.. |
| 1ba0 | bb e4 35 c3 33 16hl opt">.low_wm,
disk_buf.win_right - sw.right);
#endif
if (disk_buf.win_right - sw.right > disk_buf.low_wm)
break;
disk_buf.state = TSTATE_BUFFERING;
} /* default: */
/* Fall-through */
case TSTATE_BUFFERING:
{
ssize_t len, n;
uint32_t tag, *tag_p;
/* Limit buffering up to the stream with the least progress */
if (!stream_get_window(&sw))
{
disk_buf.state = TSTATE_DATA;
rb->ata_sleep();
break;
}
/* Wrap pointer */
if (disk_buf.tail >= disk_buf.end)
disk_buf.tail = disk_buf.start;
len = disk_buf.size - disk_buf.win_right + sw.left;
if (len < DISK_BUF_PAGE_SIZE)
{
/* Free space is less than one page */
disk_buf.state = TSTATE_DATA;
disk_buf.low_wm = DISK_BUF_LOW_WATERMARK;
rb->ata_sleep();
break;
}
len = disk_buf.tail - disk_buf.start;
tag = MAP_OFFSET_TO_TAG(disk_buf.win_right);
tag_p = &disk_buf.cache[len >> DISK_BUF_PAGE_SHIFT];
if (*tag_p != tag)
{
if (disk_buf.need_seek)
{
rb->lseek(disk_buf.in_file, disk_buf.win_right, SEEK_SET);
disk_buf.need_seek = false;
}
n = rb->read(disk_buf.in_file, disk_buf.tail, DISK_BUF_PAGE_SIZE);
if (n <= 0)
{
/* Error or end of stream */
disk_buf.state = TSTATE_EOS;
rb->ata_sleep();
break;
}
if (len < DISK_GUARDBUF_SIZE)
{
/* Autoguard guard-o-rama - maintain guardbuffer coherency */
rb->memcpy(disk_buf.end + len, disk_buf.tail,
MIN(DISK_GUARDBUF_SIZE - len, n));
}
/* Update the cache entry for this page */
*tag_p = tag;
}
else
{
/* Skipping a read */
n = MIN(DISK_BUF_PAGE_SIZE,
disk_buf.filesize - disk_buf.win_right);
disk_buf.need_seek = true;
}
disk_buf.tail += DISK_BUF_PAGE_SIZE;
/* Keep left edge moving forward */
/* Advance right edge in temp variable first, then move
* left edge if overflow would occur. This avoids a stream
* thinking its data might be available when it actually
* may not end up that way after a slide of the window. */
len = disk_buf.win_right + n;
if (len - disk_buf.win_left > disk_buf.size)
disk_buf.win_left += n;
disk_buf.win_right = len;
/* Continue buffering until filled or file end */
rb->yield();
} /* TSTATE_BUFFERING: */
case TSTATE_EOS:
break;
} /* end switch */
}
static void disk_buf_on_reset(ssize_t pos)
{
int page;
uint32_t tag;
off_t anchor;
disk_buf.state = TSTATE_INIT;
disk_buf.status = STREAM_STOPPED;
clear_data_notifies();
if (pos >= disk_buf.filesize)
{
/* Anchor on page immediately following the one containing final
* data */
anchor = disk_buf.file_pages * DISK_BUF_PAGE_SIZE;
disk_buf.win_left = disk_buf.filesize;
}
else
{
anchor = pos & ~DISK_BUF_PAGE_MASK;
disk_buf.win_left = anchor;
}
/* Collect all valid data already buffered that is contiguous with the
* current position - probe to left, then to right */
if (anchor > 0)
{
page = MAP_OFFSET_TO_PAGE(anchor);
tag = MAP_OFFSET_TO_TAG(anchor);
do
{
if (--tag, --page < 0)
page = disk_buf.pgcount - 1;
if (disk_buf.cache[page] != tag)
break;
disk_buf.win_left = tag << DISK_BUF_PAGE_SHIFT;
}
while (tag > 0);
}
if (anchor < disk_buf.filesize)
{
page = MAP_OFFSET_TO_PAGE(anchor);
tag = MAP_OFFSET_TO_TAG(anchor);
do
{
if (disk_buf.cache[page] != tag)
break;
if (++tag, ++page >= disk_buf.pgcount)
page = 0;
anchor += DISK_BUF_PAGE_SIZE;
}
while (anchor < disk_buf.filesize);
}
if (anchor >= disk_buf.filesize)
{
disk_buf.win_right = disk_buf.filesize;
disk_buf.state = TSTATE_EOS;
}
else
{
disk_buf.win_right = anchor;
}
disk_buf.tail = disk_buf.start + MAP_OFFSET_TO_BUFFER(anchor);
DEBUGF("disk buf reset\n"
" dwl:%ld dwr:%ld\n",
disk_buf.win_left, disk_buf.win_right);
/* Next read position is at right edge */
rb->lseek(disk_buf.in_file, disk_buf.win_right, SEEK_SET);
disk_buf.need_seek = false;
disk_buf_reply_msg(disk_buf.win_right - disk_buf.win_left);
}
static void disk_buf_on_stop(void)
{
bool was_buffering = disk_buf.state == TSTATE_BUFFERING;
disk_buf.state = TSTATE_EOS;
disk_buf.status = STREAM_STOPPED;
clear_data_notifies();
disk_buf_reply_msg(was_buffering);
}
static void disk_buf_on_play_pause(bool play, bool forcefill)
{
struct stream_window sw;
if (disk_buf.state != TSTATE_EOS)
{
if (forcefill)
{
/* Force buffer filling to top */
disk_buf.state = TSTATE_BUFFERING;
}
else if (disk_buf.state != TSTATE_BUFFERING)
{
/* If not filling already, simply monitor */
disk_buf.state = TSTATE_DATA;
}
}
/* else end of stream - no buffering to do */
disk_buf.pos_last = stream_get_window(&sw) ? sw.right : 0;
disk_buf.time_last = stream_get_ticks(NULL);
disk_buf.status = play ? STREAM_PLAYING : STREAM_PAUSED;
}
static int disk_buf_on_load_range(struct dbuf_range *rng)
{
uint32_t tag = rng->tag_start;
uint32_t tag_end = rng->tag_end;
int page = rng->pg_start;
/* Check if a seek is required */
bool need_seek = rb->lseek(disk_buf.in_file, 0, SEEK_CUR)
!= (off_t)(tag << DISK_BUF_PAGE_SHIFT);
do
{
uint32_t *tag_p = &disk_buf.cache[page];
if (*tag_p != tag)
{
/* Page not cached - load it */
ssize_t o, n;
if (need_seek)
{
rb->lseek(disk_buf.in_file, tag << DISK_BUF_PAGE_SHIFT,
SEEK_SET);
need_seek = false;
}
o = page << DISK_BUF_PAGE_SHIFT;
n = rb->read(disk_buf.in_file, disk_buf.start + o,
DISK_BUF_PAGE_SIZE);
if (n < 0)
{
/* Read error */
return DISK_BUF_NOTIFY_ERROR;
}
if (n == 0)
{
/* End of file */
break;
}
if (o < DISK_GUARDBUF_SIZE)
{
/* Autoguard guard-o-rama - maintain guardbuffer coherency */
rb->memcpy(disk_buf.end + o, disk_buf.start + o,
MIN(DISK_GUARDBUF_SIZE - o, n));
}
/* Update the cache entry */
*tag_p = tag;
}
else
{
/* Skipping a disk read - must seek on next one */
need_seek = true;
}
if (++page >= disk_buf.pgcount)
page = 0;
}
while (++tag <= tag_end);
return DISK_BUF_NOTIFY_OK;
}
static void disk_buf_thread(void)
{
struct queue_event ev;
disk_buf.state = TSTATE_EOS;
disk_buf.status = STREAM_STOPPED;
while (1)
{
if (disk_buf.state != TSTATE_EOS)
{
/* Poll buffer status and messages */
rb->queue_wait_w_tmo(disk_buf.q, &ev,
disk_buf.state == TSTATE_BUFFERING ?
0 : HZ/5);
}
else
{
/* Sit idle and wait for commands */
rb->queue_wait(disk_buf.q, &ev);
}
switch (ev.id)
{
case SYS_TIMEOUT:
if (disk_buf.state == TSTATE_EOS)
break;
disk_buf_buffer();
/* Check for any due notifications if any are pending */
if (nf_list.next != NULL)
check_data_notifies();
/* Still more data left? */
if (disk_buf.state != TSTATE_EOS)
continue;
/* Nope - end of stream */
break;
case DISK_BUF_CACHE_RANGE:
disk_buf_reply_msg(disk_buf_on_load_range(
(struct dbuf_range *)ev.data));
break;
case STREAM_RESET:
disk_buf_on_reset(ev.data);
break;
case STREAM_STOP:
disk_buf_on_stop();
break;
case STREAM_PAUSE:
case STREAM_PLAY:
disk_buf_on_play_pause(ev.id == STREAM_PLAY, ev.data != 0);
disk_buf_reply_msg(1);
break;
case STREAM_QUIT:
disk_buf.state = TSTATE_EOS;
return;
case DISK_BUF_DATA_NOTIFY:
disk_buf_reply_msg(disk_buf_on_data_notify(
(struct stream_hdr *)ev.data));
break;
case DISK_BUF_CLEAR_DATA_NOTIFY:
disk_buf_on_clear_data_notify((struct stream_hdr *)ev.data);
disk_buf_reply_msg(1);
break;
}
}
}
/* Caches some data from the current file */
static int disk_buf_probe(off_t start, size_t length,
void **p, size_t *outlen)
{
off_t end;
uint32_t tag, tag_end;
int page;
/* Can't read past end of file */
if (length > (size_t)(disk_buf.filesize - disk_buf.offset))
{
length = disk_buf.filesize - disk_buf.offset;
}
/* Can't cache more than the whole buffer size */
if (length > (size_t)disk_buf.size)
{
length = disk_buf.size;
}
/* Zero-length probes permitted */
end = start + length;
/* Prepare the range probe */
tag = MAP_OFFSET_TO_TAG(start);
tag_end = MAP_OFFSET_TO_TAG(end);
page = MAP_OFFSET_TO_PAGE(start);
/* If the end is on a page boundary, check one less or an extra
* one will be probed */
if (tag_end > tag && (end & DISK_BUF_PAGE_MASK) == 0)
{
tag_end--;
}
if (p != NULL)
{
*p = disk_buf.start + (page << DISK_BUF_PAGE_SHIFT)
+ (start & DISK_BUF_PAGE_MASK);
}
if (outlen != NULL)
{
*outlen = length;
}
/* Obtain initial load point. If all data was cached, no message is sent
* otherwise begin on the first page that is not cached. Since we have to
* send the message anyway, the buffering thread will determine what else
* requires loading on its end in order to cache the specified range. */
do
{
if (disk_buf.cache[page] != tag)
{
static struct dbuf_range rng IBSS_ATTR;
DEBUGF("disk_buf: cache miss\n");
rng.tag_start = tag;
rng.tag_end = tag_end;
rng.pg_start = page;
return rb->queue_send(disk_buf.q, DISK_BUF_CACHE_RANGE,
(intptr_t)&rng);
}
if (++page >= disk_buf.pgcount)
page = 0;
}
while (++tag <= tag_end);
return DISK_BUF_NOTIFY_OK;
}
/* Attempt to get a pointer to size bytes on the buffer. Returns real amount of
* data available as well as the size of non-wrapped data after *p. */
ssize_t _disk_buf_getbuffer(size_t size, void **pp, void **pwrap, size_t *sizewrap)
{
disk_buf_lock();
if (disk_buf_probe(disk_buf.offset, size, pp, &size) == DISK_BUF_NOTIFY_OK)
{
if (pwrap && sizewrap)
{
uint8_t *p = (uint8_t *)*pp;
if (p + size > disk_buf.end + DISK_GUARDBUF_SIZE)
{
/* Return pointer to wraparound and the size of same */
size_t nowrap = (disk_buf.end + DISK_GUARDBUF_SIZE) - p;
*pwrap = disk_buf.start + DISK_GUARDBUF_SIZE;
*sizewrap = size - nowrap;
}
else
{
*pwrap = NULL;
*sizewrap = 0;
}
}
}
else
{
size = -1;
}
disk_buf_unlock();
return size;
}
/* Read size bytes of data into a buffer - advances the buffer pointer
* and returns the real size read. */
ssize_t disk_buf_read(void *buffer, size_t size)
{
uint8_t *p;
disk_buf_lock();
if (disk_buf_probe(disk_buf.offset, size, PUN_PTR(void **, &p),
&size) == DISK_BUF_NOTIFY_OK)
{
if (p + size > disk_buf.end + DISK_GUARDBUF_SIZE)
{
/* Read wraps */
size_t nowrap = (disk_buf.end + DISK_GUARDBUF_SIZE) - p;
rb->memcpy(buffer, p, nowrap);
rb->memcpy(buffer + nowrap, disk_buf.start + DISK_GUARDBUF_SIZE,
size - nowrap);
}
else
{
/* Read wasn't wrapped or guardbuffer holds it */
rb->memcpy(buffer, p, size);
}
disk_buf.offset += size;
}
else
{
size = -1;
}
disk_buf_unlock();
return size;
}
off_t disk_buf_lseek(off_t offset, int whence)
{
disk_buf_lock();
/* The offset returned is the result of the current thread's action and
* may be invalidated so a local result is returned and not the value
* of disk_buf.offset directly */
switch (whence)
{
case SEEK_SET:
/* offset is just the offset */
break;
case SEEK_CUR:
offset += disk_buf.offset;
break;
case SEEK_END:
offset = disk_buf.filesize + offset;
break;
default:
disk_buf_unlock();
return -2; /* Invalid request */
}
if (offset < 0 || offset > disk_buf.filesize)
{
offset = -3;
}
else
{
disk_buf.offset = offset;
}
disk_buf_unlock();
return offset;
}
/* Prepare the buffer to enter the streaming state. Evaluates the available
* streaming window. */
ssize_t disk_buf_prepare_streaming(off_t pos, size_t len)
{
disk_buf_lock();
if (pos < 0)
pos = 0;
else if (pos > disk_buf.filesize)
pos = disk_buf.filesize;
DEBUGF("prepare streaming:\n pos:%ld len:%lu\n", pos, len);
pos = disk_buf_lseek(pos, SEEK_SET);
disk_buf_probe(pos, len, NULL, &len);
DEBUGF(" probe done: pos:%ld len:%lu\n", pos, len);
len = disk_buf_send_msg(STREAM_RESET, pos);
disk_buf_unlock();
return len;
}
/* Set the streaming window to an arbitrary position within the file. Makes no
* probes to validate data. Use after calling another function to cause data
* to be cached and correct values are known. */
ssize_t disk_buf_set_streaming_window(off_t left, off_t right)
{
ssize_t len;
disk_buf_lock();
if (left < 0)
left = 0;
else if (left > disk_buf.filesize)
left = disk_buf.filesize;
if (left > right)
right = left;
if (right > disk_buf.filesize)
right = disk_buf.filesize;
disk_buf.win_left = left;
disk_buf.win_right = right;
disk_buf.tail = disk_buf.start + ((right + DISK_BUF_PAGE_SIZE-1) &
~DISK_BUF_PAGE_MASK) % disk_buf.size;
len = disk_buf.win_right - disk_buf.win_left;
disk_buf_unlock();
return len;
}
void * disk_buf_offset2ptr(off_t offset)
{
if (offset < 0)
offset = 0;
else if (offset > disk_buf.filesize)
offset = disk_buf.filesize;
return disk_buf.start + (offset % disk_buf.size);
}
void disk_buf_close(void)
{
disk_buf_lock();
if (disk_buf.in_file >= 0)
{
rb->close(disk_buf.in_file);
disk_buf.in_file = -1;
/* Invalidate entire cache */
rb->memset(disk_buf.cache, 0xff,
disk_buf.pgcount*sizeof (*disk_buf.cache));
disk_buf.file_pages = 0;
disk_buf.filesize = 0;
disk_buf.offset = 0;
}
disk_buf_unlock();
}
int disk_buf_open(const char *filename)
{
int fd;
disk_buf_lock();
disk_buf_close();
fd = rb->open(filename, O_RDONLY);
if (fd >= 0)
{
ssize_t filesize = rb->filesize(fd);
if (filesize <= 0)
{
rb->close(disk_buf.in_file);
}
else
{
disk_buf.filesize = filesize;
/* Number of file pages rounded up toward +inf */
disk_buf.file_pages = ((size_t)filesize + DISK_BUF_PAGE_SIZE-1)
/ DISK_BUF_PAGE_SIZE;
disk_buf.in_file = fd;
}
}
disk_buf_unlock();
return fd;
}
intptr_t disk_buf_send_msg(long id, intptr_t data)
{
return rb->queue_send(disk_buf.q, id, data);
}
void disk_buf_post_msg(long id, intptr_t data)
{
rb->queue_post(disk_buf.q, id, data);
}
void disk_buf_reply_msg(intptr_t retval)
{
rb->queue_reply(disk_buf.q, retval);
}
bool disk_buf_init(void)
{
disk_buf.thread = NULL;
list_initialize(&nf_list);
rb->mutex_init(&disk_buf_mtx);
disk_buf.q = &disk_buf_queue;
rb->queue_init(disk_buf.q, false);
disk_buf.state = TSTATE_EOS;
disk_buf.status = STREAM_STOPPED;
disk_buf.in_file = -1;
disk_buf.filesize = 0;
disk_buf.win_left = 0;
disk_buf.win_right = 0;
disk_buf.time_last = 0;
disk_buf.pos_last = 0;
disk_buf.low_wm = DISK_BUF_LOW_WATERMARK;
disk_buf.start = mpeg_malloc_all(&disk_buf.size, MPEG_ALLOC_DISKBUF);
if (disk_buf.start == NULL)
return false;
#ifdef PROC_NEEDS_CACHEALIGN
disk_buf.size = CACHEALIGN_BUFFER(&disk_buf.start, disk_buf.size);
disk_buf.start = UNCACHED_ADDR(disk_buf.start);
#endif
disk_buf.size -= DISK_GUARDBUF_SIZE;
disk_buf.pgcount = disk_buf.size / DISK_BUF_PAGE_SIZE;
/* Fit it as tightly as possible */
while (disk_buf.pgcount*(sizeof (*disk_buf.cache) + DISK_BUF_PAGE_SIZE)
> (size_t)disk_buf.size)
{
disk_buf.pgcount--;
}
disk_buf.cache = (typeof (disk_buf.cache))disk_buf.start;
disk_buf.start += sizeof (*disk_buf.cache)*disk_buf.pgcount;
disk_buf.size = disk_buf.pgcount*DISK_BUF_PAGE_SIZE;
disk_buf.end = disk_buf.start + disk_buf.size;
disk_buf.tail = disk_buf.start;
DEBUGF("disk_buf info:\n"
" page count: %d\n"
" size: %ld\n",
disk_buf.pgcount, disk_buf.size);
rb->memset(disk_buf.cache, 0xff,
disk_buf.pgcount*sizeof (*disk_buf.cache));
disk_buf.thread = rb->create_thread(
disk_buf_thread, disk_buf_stack, sizeof(disk_buf_stack), 0,
"mpgbuffer" IF_PRIO(, PRIORITY_BUFFERING) IF_COP(, CPU));
rb->queue_enable_queue_send(disk_buf.q, &disk_buf_queue_send,
disk_buf.thread);
if (disk_buf.thread == NULL)
return false;
/* Wait for thread to initialize */
disk_buf_send_msg(STREAM_NULL, 0);
return true;
}
void disk_buf_exit(void)
{
if (disk_buf.thread != NULL)
{
rb->queue_post(disk_buf.q, STREAM_QUIT, 0);
rb->thread_wait(disk_buf.thread);
disk_buf.thread = NULL;
}
}
|