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