This source file includes following definitions.
- jpeg_define
- jpeg_set_qual
1
2 #ifndef JPEG_H
3 #define JPEG_H 1
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 static const u8 jpeg_head[] = {
20 0xff, 0xd8,
21
22
23 0xff, 0xdb, 0x00, 0x84,
24 0,
25 #define JPEG_QT0_OFFSET 7
26 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
27 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
28 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
29 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
30 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
31 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
32 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
33 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
34 1,
35 #define JPEG_QT1_OFFSET 72
36 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
37 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
38 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
39 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
40 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
41 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
42 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
43 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
44
45
46 0xff, 0xc4, 0x01, 0xa2,
47 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01,
48 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
50 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x01, 0x00, 0x03,
51 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
52 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
53 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
54 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03,
55 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00,
56 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04,
57 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13,
58 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81,
59 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15,
60 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82,
61 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25,
62 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36,
63 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46,
64 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56,
65 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66,
66 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76,
67 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86,
68 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95,
69 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4,
70 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3,
71 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2,
72 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca,
73 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
74 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
75 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5,
76 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x11, 0x00, 0x02,
77 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
78 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01,
79 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06,
80 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22,
81 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1,
82 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62,
83 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25,
84 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28,
85 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a,
86 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
87 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
88 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
89 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a,
90 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
91 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
92 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
93 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
94 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
95 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
96 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3,
97 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2,
98 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
99 #ifdef CONEX_CAM
100
101 #define JPEG_HDR_SZ 556
102 #else
103 0xff, 0xc0, 0x00, 0x11,
104 0x08,
105 #define JPEG_HEIGHT_OFFSET 561
106 0x01, 0xe0,
107 0x02, 0x80,
108 0x03,
109 0x01,
110 0x21,
111 0x00,
112 0x02, 0x11, 0x01,
113 0x03, 0x11, 0x01,
114
115 0xff, 0xda, 0x00, 0x0c,
116 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
117 #define JPEG_HDR_SZ 589
118 #endif
119 };
120
121
122 static void jpeg_define(u8 *jpeg_hdr,
123 int height,
124 int width,
125 int samplesY)
126 {
127 memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
128 #ifndef CONEX_CAM
129 jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
130 jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
131 jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
132 jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
133 jpeg_hdr[JPEG_HEIGHT_OFFSET + 6] = samplesY;
134 #endif
135 }
136
137
138 static void jpeg_set_qual(u8 *jpeg_hdr,
139 int quality)
140 {
141 int i, sc;
142
143 if (quality <= 0)
144 sc = 5000;
145 else if (quality < 50)
146 sc = 5000 / quality;
147 else
148 sc = 200 - quality * 2;
149 for (i = 0; i < 64; i++) {
150 jpeg_hdr[JPEG_QT0_OFFSET + i] =
151 (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
152 jpeg_hdr[JPEG_QT1_OFFSET + i] =
153 (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
154 }
155 }
156 #endif