|
1 /* |
|
2 * Copyright (c) 2003, 2004 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Collection of structs used to gather the various |
|
15 * marker related information in the JP2 image file. |
|
16 * TxxxMarker must not exist on the stack, it must |
|
17 * be the data member of the classes derived from CBase. |
|
18 * |
|
19 */ |
|
20 |
|
21 |
|
22 #ifndef __JP2KMARKER_H__ |
|
23 #define __JP2KMARKER_H__ |
|
24 |
|
25 // INCLUDES |
|
26 #include <e32base.h> |
|
27 |
|
28 // CONSTANTS |
|
29 |
|
30 // MACROS |
|
31 |
|
32 // DATA TYPES |
|
33 |
|
34 /** |
|
35 * struct TSizMarker |
|
36 * Image and tile size (SIZ) |
|
37 * @since 2.6 |
|
38 */ |
|
39 struct TSizMarker |
|
40 { |
|
41 |
|
42 /** |
|
43 * Constructor |
|
44 * @since 2.6 |
|
45 */ |
|
46 TSizMarker(); |
|
47 |
|
48 /** |
|
49 * Destructor |
|
50 * @since 2.6 |
|
51 */ |
|
52 ~TSizMarker(); |
|
53 |
|
54 TUint32 iXsiz; |
|
55 TUint32 iYsiz; |
|
56 TUint32 iXOsiz; |
|
57 TUint32 iYOsiz; |
|
58 TUint32 iXTsiz; |
|
59 TUint32 iYTsiz; |
|
60 TUint32 iXTOsiz; |
|
61 TUint32 iYTOsiz; |
|
62 TUint16 iRsiz; |
|
63 TUint16 iCsiz; |
|
64 RArray<TUint> iSsiz; |
|
65 RArray<TUint> iXRsiz; |
|
66 RArray<TUint> iYRsiz; |
|
67 }; |
|
68 |
|
69 /** |
|
70 * struct TSotMarker |
|
71 * Start of tile-part (SOT) |
|
72 * @since 2.6 |
|
73 */ |
|
74 struct TSotMarker |
|
75 { |
|
76 TUint32 iPsot; |
|
77 TUint16 iIsot; |
|
78 TUint8 iTPsot; |
|
79 TUint8 iTNsot; |
|
80 }; |
|
81 |
|
82 /** |
|
83 * struct TCODMarker |
|
84 * Coding style default (COD) |
|
85 * @since 2.6 |
|
86 */ |
|
87 struct TCODMarker |
|
88 { |
|
89 /** |
|
90 * Constructor |
|
91 * @since 2.6 |
|
92 */ |
|
93 TCODMarker(); |
|
94 |
|
95 /** |
|
96 * Destructor |
|
97 * @since 2.6 |
|
98 */ |
|
99 ~TCODMarker(); |
|
100 |
|
101 TUint8 iScod; |
|
102 TUint8 iProgressionOrder; |
|
103 TUint8 iColorTransformation; |
|
104 TUint8 iNumOfLevels; |
|
105 TUint8 iCodeBlockStyle; |
|
106 TUint8 iWaveletTransformation; |
|
107 TUint16 iNumOfLayers; |
|
108 TSize iCodeBlockSiz; |
|
109 HBufC8 *iPrecinctSiz; |
|
110 }; |
|
111 |
|
112 /** |
|
113 * struct TCOCMarker |
|
114 * Coding style component (COC) |
|
115 * @since 2.6 |
|
116 */ |
|
117 struct TCOCMarker |
|
118 { |
|
119 |
|
120 /** |
|
121 * Constructor |
|
122 * @since 2.6 |
|
123 */ |
|
124 TCOCMarker(); |
|
125 |
|
126 /** |
|
127 * Destructor |
|
128 * @since 2.6 |
|
129 */ |
|
130 ~TCOCMarker(); |
|
131 |
|
132 TUint16 iCcoc; |
|
133 TUint8 iScoc; |
|
134 TUint8 iNumOfLevels; |
|
135 TUint8 iCodeBlockStyle; |
|
136 TUint8 iWaveletTransformation; |
|
137 TSize iCodeBlockSiz; |
|
138 HBufC8 *iPrecinctSiz; |
|
139 }; |
|
140 |
|
141 /** |
|
142 * struct TQCDMarker |
|
143 * Quantization default (QCD) |
|
144 * @since 2.6 |
|
145 */ |
|
146 struct TQCDMarker |
|
147 { |
|
148 |
|
149 /** |
|
150 * Constructor |
|
151 * @since 2.6 |
|
152 */ |
|
153 TQCDMarker(); |
|
154 |
|
155 /** |
|
156 * Destructor |
|
157 * @since 2.6 |
|
158 */ |
|
159 ~TQCDMarker(); |
|
160 |
|
161 TUint8 iSqcd; |
|
162 HBufC8 *iExponent; |
|
163 HBufC16 *iMantissa; |
|
164 }; |
|
165 |
|
166 /** |
|
167 * struct TQCCMarker |
|
168 * Quantization component (QCC) |
|
169 * @since 2.6 |
|
170 */ |
|
171 struct TQCCMarker |
|
172 { |
|
173 |
|
174 /** |
|
175 * Constructor |
|
176 * @since 2.6 |
|
177 */ |
|
178 TQCCMarker(); |
|
179 |
|
180 /** |
|
181 * Destructor |
|
182 * @since 2.6 |
|
183 */ |
|
184 ~TQCCMarker(); |
|
185 |
|
186 TUint16 iCqcc; |
|
187 TUint8 iSqcc; |
|
188 HBufC8 *iExponent; |
|
189 HBufC16 *iMantissa; |
|
190 }; |
|
191 |
|
192 /** |
|
193 * struct TRGNMarker |
|
194 * Region of interest (RGN) |
|
195 * @since 2.6 |
|
196 */ |
|
197 struct TRGNMarker |
|
198 { |
|
199 TUint16 iCrgn; |
|
200 TUint8 iSrgn; |
|
201 TUint8 iSPrgn; |
|
202 }; |
|
203 |
|
204 /** |
|
205 * struct TPOCMarker |
|
206 * Progression order change (POC) |
|
207 * @since 2.6 |
|
208 */ |
|
209 struct TPOCMarker |
|
210 { |
|
211 |
|
212 /** |
|
213 * Constructor |
|
214 * @since 2.6 |
|
215 */ |
|
216 TPOCMarker(); |
|
217 |
|
218 /** |
|
219 * Destructor |
|
220 * @since 2.6 |
|
221 */ |
|
222 ~TPOCMarker(); |
|
223 |
|
224 RArray<TUint> iRSpoc; |
|
225 RArray<TUint> iCSpoc; |
|
226 RArray<TUint> iLYEpoc; |
|
227 RArray<TUint> iREpoc; |
|
228 RArray<TUint> iCEpoc; |
|
229 RArray<TUint> iPpoc; |
|
230 }; |
|
231 |
|
232 /** |
|
233 * struct TPPMMarker |
|
234 * Packed packet headers, main header (PPM) |
|
235 * @since 2.6 |
|
236 */ |
|
237 struct TPPMMarker |
|
238 { |
|
239 |
|
240 /** |
|
241 * Constructor |
|
242 * @since 2.6 |
|
243 */ |
|
244 TPPMMarker(); |
|
245 |
|
246 /** |
|
247 * Destructor |
|
248 * @since 2.6 |
|
249 */ |
|
250 ~TPPMMarker(); |
|
251 |
|
252 TUint8 iZppm; |
|
253 TUint32 iRemainder; |
|
254 TUint32 iNppm; |
|
255 HBufC8 *iIppm; |
|
256 }; |
|
257 |
|
258 /** |
|
259 * struct TTLMMarker |
|
260 * Tile-part lengths (TLM) |
|
261 * @since 2.6 |
|
262 */ |
|
263 struct TTLMMarker |
|
264 { |
|
265 |
|
266 /** |
|
267 * Constructor |
|
268 * @since 2.6 |
|
269 */ |
|
270 TTLMMarker(); |
|
271 |
|
272 /** |
|
273 * Destructor |
|
274 * @since 2.6 |
|
275 */ |
|
276 ~TTLMMarker(); |
|
277 |
|
278 TUint8 iZtlm; |
|
279 TUint8 iStlm; |
|
280 RArray<TUint> iTtlm; |
|
281 RArray<TUint> iPtlm; |
|
282 }; |
|
283 |
|
284 /** |
|
285 * struct TPLMMarker |
|
286 * Packet length, main header (PLM) |
|
287 * @since 2.6 |
|
288 */ |
|
289 struct TPLMMarker |
|
290 { |
|
291 /** |
|
292 * Constructor |
|
293 * @since 2.6 |
|
294 */ |
|
295 TPLMMarker(); |
|
296 |
|
297 /** |
|
298 * Destructor |
|
299 * @since 2.6 |
|
300 */ |
|
301 ~TPLMMarker(); |
|
302 |
|
303 TUint8 iZplm; |
|
304 TUint8 iNplm; |
|
305 HBufC8 *iIplm; |
|
306 }; |
|
307 |
|
308 /** |
|
309 * struct TPPTMarker |
|
310 * Packed packet headers, tile-part header (PPT) |
|
311 * @since 2.6 |
|
312 */ |
|
313 struct TPPTMarker |
|
314 { |
|
315 |
|
316 /** |
|
317 * Constructor |
|
318 * @since 2.6 |
|
319 */ |
|
320 TPPTMarker(); |
|
321 |
|
322 /** |
|
323 * Destructor |
|
324 * @since 2.6 |
|
325 */ |
|
326 ~TPPTMarker(); |
|
327 |
|
328 TUint8 iZppt; |
|
329 HBufC8 *iIppt; |
|
330 }; |
|
331 |
|
332 /** |
|
333 * struct TPLTMarker |
|
334 * Packet length, tile-part header (PLT) |
|
335 * @since 2.6 |
|
336 */ |
|
337 struct TPLTMarker |
|
338 { |
|
339 |
|
340 /** |
|
341 * Constructor |
|
342 * @since 2.6 |
|
343 */ |
|
344 TPLTMarker(); |
|
345 |
|
346 /** |
|
347 * Destructor |
|
348 * @since 2.6 |
|
349 */ |
|
350 ~TPLTMarker(); |
|
351 |
|
352 TUint8 iZplt; |
|
353 RArray<TUint> iIplt; |
|
354 }; |
|
355 |
|
356 /** |
|
357 * struct TCRGMarker |
|
358 * Component registration (CRG) |
|
359 * @since 2.6 |
|
360 */ |
|
361 struct TCRGMarker |
|
362 { |
|
363 |
|
364 /** |
|
365 * Constructor |
|
366 * @since 2.6 |
|
367 */ |
|
368 TCRGMarker(); |
|
369 |
|
370 /** |
|
371 * Destructor |
|
372 * @since 2.6 |
|
373 */ |
|
374 ~TCRGMarker(); |
|
375 |
|
376 RArray<TPoint> iXYcrg; |
|
377 }; |
|
378 |
|
379 /** |
|
380 * struct TCOMMarker |
|
381 * Comment (COM) |
|
382 * @since 2.6 |
|
383 */ |
|
384 struct TCOMMarker |
|
385 { |
|
386 |
|
387 /** |
|
388 * Constructor |
|
389 * @since 2.6 |
|
390 */ |
|
391 TCOMMarker(); |
|
392 /** |
|
393 * Destructor |
|
394 * @since 2.6 |
|
395 */ |
|
396 ~TCOMMarker(); |
|
397 |
|
398 TUint16 iRemainder; |
|
399 TUint16 iRcom; |
|
400 HBufC8 *iCcom; |
|
401 }; |
|
402 |
|
403 /** |
|
404 * struct TMainMarker |
|
405 * Main header |
|
406 * @since 2.6 |
|
407 */ |
|
408 struct TMainMarker |
|
409 { |
|
410 |
|
411 /** |
|
412 * Constructor |
|
413 * @since 2.6 |
|
414 */ |
|
415 TMainMarker(); |
|
416 |
|
417 /** |
|
418 * Destructor |
|
419 * @since 2.6 |
|
420 */ |
|
421 ~TMainMarker(); |
|
422 |
|
423 TCODMarker iCod; |
|
424 TQCDMarker iQcd; |
|
425 RPointerArray<TCOCMarker> iCoc; |
|
426 RPointerArray<TQCCMarker> iQcc; |
|
427 RPointerArray<TRGNMarker> iRgn; |
|
428 TPOCMarker *iPoc; |
|
429 RPointerArray<TPPMMarker> iPpm; |
|
430 RPointerArray<TTLMMarker> iTlm; |
|
431 RPointerArray<TPLMMarker> iPlm; |
|
432 TCRGMarker *iCrg; |
|
433 RPointerArray<TCOMMarker> iCom; |
|
434 }; |
|
435 |
|
436 /** |
|
437 * struct TTileMarker |
|
438 * Tile-part header |
|
439 * @since 2.6 |
|
440 */ |
|
441 struct TTileMarker |
|
442 { |
|
443 /** |
|
444 * Constructor |
|
445 * @since 2.6 |
|
446 */ |
|
447 TTileMarker(); |
|
448 |
|
449 /** |
|
450 * Destructor |
|
451 * @since 2.6 |
|
452 */ |
|
453 ~TTileMarker(); |
|
454 |
|
455 TCODMarker *iCod; |
|
456 TQCDMarker *iQcd; |
|
457 RPointerArray<TCOCMarker> iCoc; |
|
458 RPointerArray<TQCCMarker> iQcc; |
|
459 RPointerArray<TRGNMarker> iRgn; |
|
460 TPOCMarker *iPoc; |
|
461 RPointerArray<TPPTMarker> iPpt; |
|
462 RPointerArray<TPLTMarker> iPlt; |
|
463 RPointerArray<TCOMMarker> iCom; |
|
464 }; |
|
465 |
|
466 |
|
467 // FUNCTION PROTOTYPES |
|
468 |
|
469 // FORWARD DECLARATIONS |
|
470 |
|
471 // CLASS DECLARATION |
|
472 |
|
473 /** |
|
474 * MJ2kPacketHeaderReader defines the interface |
|
475 * for reading the packet header from streams. |
|
476 * @since 2.6 |
|
477 */ |
|
478 class MJ2kPacketHeaderReader |
|
479 { |
|
480 public: // Constructors and destructor |
|
481 |
|
482 public: // New functions |
|
483 |
|
484 /** |
|
485 * Try to consume the EPH marker if there is one |
|
486 * @since 2.6 |
|
487 * @return TUint8: true if end of buffer. |
|
488 */ |
|
489 virtual TUint8 ReadEPHMarker() = 0; |
|
490 |
|
491 /** |
|
492 * Read a bit from the packet header stream |
|
493 * @since 2.6 |
|
494 * @param aBit: get a bit from the packet header bitstream. |
|
495 * @return TUint8: true if end of buffer. |
|
496 */ |
|
497 virtual TUint8 ReadBit( TUint8& aBit ) = 0; |
|
498 |
|
499 /** |
|
500 * Read some bits from the packet header stream |
|
501 * @since 2.6 |
|
502 * @param aBit: get some bits from the packet header bitstream. |
|
503 * @param aBitLen: how many bits to read. |
|
504 * @return TUint8: true if end of buffer. |
|
505 */ |
|
506 virtual TUint8 ReadBits( TUint8& aBit, TUint8 aBitLen ) = 0; |
|
507 |
|
508 /** |
|
509 * Read some bits from the packet header stream |
|
510 * @since 2.6 |
|
511 * @param aBit: get some bits from the packet header bitstream. |
|
512 * @param aBitLen: how many bits to read. |
|
513 * @return TUint8: true if end of buffer. |
|
514 */ |
|
515 virtual TUint8 ReadBits( TUint32& aBit, TUint8 aBitLen ) = 0; |
|
516 |
|
517 /** |
|
518 * Start reading from packet header stream |
|
519 * @since 2.6 |
|
520 * @return TUint8: true if end of buffer. |
|
521 */ |
|
522 virtual TUint8 StartReadBit() = 0; |
|
523 |
|
524 /** |
|
525 * Align the stream to the next byte boundary if necessary |
|
526 * @since 2.6 |
|
527 */ |
|
528 virtual void AlignReader() = 0; |
|
529 |
|
530 public: // Functions from base classes |
|
531 |
|
532 protected: // New functions |
|
533 |
|
534 protected: // Functions from base classes |
|
535 |
|
536 private: |
|
537 |
|
538 public: // Data |
|
539 |
|
540 protected: // Data |
|
541 |
|
542 private: // Data |
|
543 |
|
544 public: // Friend classes |
|
545 |
|
546 protected: // Friend classes |
|
547 |
|
548 private: // Friend classes |
|
549 |
|
550 }; |
|
551 |
|
552 #endif // __JP2KMARKER_H__ |