source: trunk/third/firefox/jpeg/jcinit.c @ 21695

Revision 21695, 2.3 KB checked in by rbasch, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21694, which included commits to RCS files with non-trunk default branches.
Line 
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
29GLOBAL(void)
30jinit_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. */
44  if (cinfo->arith_code) {
45    ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
46  } else {
47    if (cinfo->progressive_mode) {
48#ifdef C_PROGRESSIVE_SUPPORTED
49      jinit_phuff_encoder(cinfo);
50#else
51      ERREXIT(cinfo, JERR_NOT_COMPILED);
52#endif
53    } else
54      jinit_huff_encoder(cinfo);
55  }
56
57  /* Need a full-image coefficient buffer in any multi-pass mode. */
58  jinit_c_coef_controller(cinfo,
59                (boolean) (cinfo->num_scans > 1 || cinfo->optimize_coding));
60  jinit_c_main_controller(cinfo, FALSE /* never need full buffer here */);
61
62  jinit_marker_writer(cinfo);
63
64  /* We can now tell the memory manager to allocate virtual arrays. */
65  (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
66
67  /* Write the datastream header (SOI) immediately.
68   * Frame and scan headers are postponed till later.
69   * This lets application insert special markers after the SOI.
70   */
71  (*cinfo->marker->write_file_header) (cinfo);
72}
Note: See TracBrowser for help on using the repository browser.