author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> |
Mon, 04 Oct 2010 01:19:32 +0300 | |
changeset 37 | 758a864f9613 |
parent 30 | 5dc02b23752f |
permissions | -rw-r--r-- |
0 | 1 |
/* |
2 |
* jcinit.c |
|
3 |
* |
|
4 |
* Copyright (C) 1991-1997, Thomas G. Lane. |
|
5 |
* This file is part of the Independent JPEG Group's software. |
|
6 |
* For conditions of distribution and use, see the accompanying README file. |
|
7 |
* |
|
8 |
* This file contains initialization logic for the JPEG compressor. |
|
9 |
* This routine is in charge of selecting the modules to be executed and |
|
10 |
* making an initialization call to each one. |
|
11 |
* |
|
12 |
* Logically, this code belongs in jcmaster.c. It's split out because |
|
13 |
* linking this routine implies linking the entire compression library. |
|
14 |
* For a transcoding-only application, we want to be able to use jcmaster.c |
|
15 |
* without linking in the whole library. |
|
16 |
*/ |
|
17 |
||
18 |
#define JPEG_INTERNALS |
|
19 |
#include "jinclude.h" |
|
20 |
#include "jpeglib.h" |
|
21 |
||
22 |
||
23 |
/* |
|
24 |
* Master selection of compression modules. |
|
25 |
* This is done once at the start of processing an image. We determine |
|
26 |
* which modules will be used and give them appropriate initialization calls. |
|
27 |
*/ |
|
28 |
||
29 |
GLOBAL(void) |
|
30 |
jinit_compress_master (j_compress_ptr cinfo) |
|
31 |
{ |
|
32 |
/* Initialize master control (includes parameter checking/processing) */ |
|
33 |
jinit_c_master_control(cinfo, FALSE /* full compression */); |
|
34 |
||
35 |
/* Preprocessing */ |
|
36 |
if (! cinfo->raw_data_in) { |
|
37 |
jinit_color_converter(cinfo); |
|
38 |
jinit_downsampler(cinfo); |
|
39 |
jinit_c_prep_controller(cinfo, FALSE /* never need full buffer here */); |
|
40 |
} |
|
41 |
/* Forward DCT */ |
|
42 |
jinit_forward_dct(cinfo); |
|
43 |
/* Entropy encoding: either Huffman or arithmetic coding. */ |
|
30
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
44 |
if (cinfo->arith_code) |
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
45 |
jinit_arith_encoder(cinfo); |
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
46 |
else { |
5dc02b23752f
Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
0
diff
changeset
|
47 |
jinit_huff_encoder(cinfo); |
0 | 48 |
} |
49 |
||
50 |
/* Need a full-image coefficient buffer in any multi-pass mode. */ |
|
51 |
jinit_c_coef_controller(cinfo, |
|
52 |
(boolean) (cinfo->num_scans > 1 || cinfo->optimize_coding)); |
|
53 |
jinit_c_main_controller(cinfo, FALSE /* never need full buffer here */); |
|
54 |
||
55 |
jinit_marker_writer(cinfo); |
|
56 |
||
57 |
/* We can now tell the memory manager to allocate virtual arrays. */ |
|
58 |
(*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo); |
|
59 |
||
60 |
/* Write the datastream header (SOI) immediately. |
|
61 |
* Frame and scan headers are postponed till later. |
|
62 |
* This lets application insert special markers after the SOI. |
|
63 |
*/ |
|
64 |
(*cinfo->marker->write_file_header) (cinfo); |
|
65 |
} |