1 /* -*-C-*-
2 ******************************************************************************
3 *
4 * File:         tables.c
5 * RCS:          $Header: /ImageMagick/delegates/fpx/jpeg/tables.c,v 1.2 2000/12/23 22:37:48 bfriesen Exp $
6 * Description:  Sets Huffman & Quantization Tables to the JPEG recommended ones.
7 * Author:       Gregory Yovanof
8 * Created:      Fri Mar  1 11:21:06 1995
9 * Initial Source Release:     Thursday, March 7 1996
10 * Language:     C
11 * Package:      Hewlett-Packard JPEG Encoder/Decoder
12 *
13 * Copyright (c) 1999 Digital Imaging Group, Inc.
14 * For conditions of distribution and use, see copyright notice
15 * in Flashpix.h
16 *
17 ******************************************************************************
18 */
19 #define IMP_ENCODER
20 #include "jpegconf.h"
21 #include "enctile.h"
22 #include "encoder.h"
23 #include "public.h"
24 #include "tables.h"
25 
26 int
SetDefaultTables(void * encoder)27 SetDefaultTables(void *encoder)
28 {
29    ENCODER_STRUCT *jpg = (ENCODER_STRUCT *) encoder;
30    JPEGHuffTable HuffTables[8];
31    JPEGQuantTable QuantTables[4];
32    unsigned char   CompDCHuffIdent[4];
33    unsigned char   CompACHuffIdent[4];
34    unsigned char   CompQuantIdent[4];
35    int err_num;
36 
37    HuffTables[0].bits = DefaultLuminanceDCBits;
38    HuffTables[0].vals = DefaultLuminanceDCValues;
39    HuffTables[0].hclass = 0;
40    HuffTables[0].ident = 0;
41    HuffTables[1].bits = DefaultLuminanceACBits;
42    HuffTables[1].vals = DefaultLuminanceACValues;
43    HuffTables[1].hclass = 1;
44    HuffTables[1].ident = 0;
45    HuffTables[2].bits = DefaultChrominanceDCBits;
46    HuffTables[2].vals = DefaultChrominanceDCValues;
47    HuffTables[2].hclass = 0;
48    HuffTables[2].ident = 1;
49    HuffTables[3].bits = DefaultChrominanceACBits;
50    HuffTables[3].vals = DefaultChrominanceACValues;
51    HuffTables[3].hclass = 1;
52    HuffTables[3].ident = 1;
53 
54    CompACHuffIdent[0]=CompDCHuffIdent[0]=0;
55    CompACHuffIdent[1]=CompDCHuffIdent[1]=1;
56    CompACHuffIdent[2]=CompDCHuffIdent[2]=1;
57    CompACHuffIdent[3]=CompDCHuffIdent[3]=1;
58 
59    err_num = eJPEG_SetHuffTables(jpg,4,(JPEGHuffTable **)(&HuffTables),
60          CompDCHuffIdent,CompACHuffIdent);
61    if (err_num != eJPEG_NO_ERROR)
62   return(err_num);
63 
64    QuantTables[0].quantizer = DefaultLumQuant;
65    QuantTables[0].ident = 0;
66    QuantTables[1].quantizer = DefaultChromQuant;
67    QuantTables[1].ident = 1;
68 
69    CompQuantIdent[0] = 0;
70    CompQuantIdent[1] = 1;
71    CompQuantIdent[2] = 1;
72    CompQuantIdent[3] = 1;
73 
74    err_num = eJPEG_SetQuantTables(jpg,2,(JPEGQuantTable **)(&QuantTables),CompQuantIdent);
75    if (err_num != eJPEG_NO_ERROR)
76   return(err_num);
77 
78    return(eJPEG_NO_ERROR);
79 
80 }
81