global.h revision 12855:588919e0e4aa
1/***************************************************************************** 2 3 Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 4 more contributor license agreements. See the NOTICE file distributed 5 with this work for additional information regarding copyright ownership. 6 Accellera licenses this file to you under the Apache License, Version 2.0 7 (the "License"); you may not use this file except in compliance with the 8 License. You may obtain a copy of the License at 9 10 http://www.apache.org/licenses/LICENSE-2.0 11 12 Unless required by applicable law or agreed to in writing, software 13 distributed under the License is distributed on an "AS IS" BASIS, 14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 15 implied. See the License for the specific language governing 16 permissions and limitations under the License. 17 18 *****************************************************************************/ 19 20/***************************************************************************** 21 22 global.h -- 23 24 Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 25 26 *****************************************************************************/ 27 28/***************************************************************************** 29 30 MODIFICATION LOG - modifiers, enter your name, affiliation, date and 31 changes you are making here. 32 33 Name, Affiliation, Date: 34 Description of Modification: 35 36 *****************************************************************************/ 37 38#ifndef GLOBALH 39#define GLOBALH 40 41 42// #include <iostream.h> 43#include <stdio.h> 44 45#define MAXBUFLEN 64 46 47// cos constants, factor 512 48#define c1d4 362L 49#define c1d8 473L 50#define c3d8 196L 51#define c1d16 502L 52#define c3d16 426L 53#define c5d16 284L 54#define c7d16 100L 55 56// correct digits 57#define MSCALE(expr) (COEFF)((expr)>>9) 58 59typedef unsigned char BYTE; 60typedef unsigned short WORD; 61typedef unsigned long DWORD; 62 63typedef BYTE BLOCK[8][8]; 64typedef BYTE COMPRESSED[MAXBUFLEN]; 65typedef WORD MATRIX64x12[64]; 66 67// type of the coefficient arrays 68typedef short COEFF; 69 70// typedefs for huffman tables 71typedef struct { 72 BYTE size; 73 WORD code; 74} HUFFMTBL_ENTRY; 75 76 77struct Block { 78 BYTE b[8][8]; 79 80 Block(); 81 Block(BLOCK *); 82 Block(const Block&); 83 void operator=(const Block&); 84 int operator==(const Block&) const; 85 86 BYTE get(int x, int y) const; 87 void put(int x, int y, BYTE val); 88 BLOCK* get_ptr() const; 89}; 90 91struct Compressed { 92 BYTE c[MAXBUFLEN]; 93 94 Compressed(); 95 Compressed(const Compressed&); 96 void operator=(const Compressed&); 97 int operator==(const Compressed&) const; 98 99 void clear(); 100 BYTE get(int x) const; 101 void put(int x, BYTE val); 102}; 103 104struct Matrix64x12 { 105 WORD m[64]; 106 107 Matrix64x12(); 108 Matrix64x12(const Matrix64x12&); 109 void operator=(const Matrix64x12&); 110 int operator==(const Matrix64x12&) const; 111 112 WORD get(int x) const; 113 void put(int x, WORD val); 114}; 115 116struct Coeff8 { 117 COEFF c[8]; 118 119 Coeff8(); 120 Coeff8(const Coeff8&); 121 void operator=(const Coeff8&); 122 int operator==(const Coeff8&) const; 123 124 COEFF get(int x) const; 125 void put(int x, COEFF val); 126}; 127 128struct Coeff8x8 { 129 COEFF c[8][8]; 130 131 Coeff8x8(); 132 Coeff8x8(const Coeff8x8&); 133 void operator=(const Coeff8x8&); 134 int operator==(const Coeff8x8&) const; 135 136 COEFF get(int x, int y) const; 137 void put(int x, int y, COEFF val); 138}; 139 140inline 141void 142sc_trace( sc_trace_file*, const Coeff8x8&, const std::string& ) 143{ 144 // NOT IMPLEMENTED 145} 146 147 148// quantization table 8-bit unsigned integer 149static const unsigned char coeff_quant[8][8] = { // v is row 150 { 16, 11, 10, 16, 24, 40, 51, 61}, 151 { 12, 12, 14, 19, 26, 58, 60, 55}, 152 { 14, 13, 16, 24, 40, 57, 69, 56}, 153 { 14, 17, 22, 29, 51, 87, 80, 82}, 154 { 18, 22, 37, 56, 68, 109, 103, 77}, 155 { 24, 35, 55, 64, 81, 104, 113, 92}, 156 { 99, 64, 78, 87, 103, 121, 120, 101}, 157 { 72, 92, 95, 98, 112, 100, 103, 99} 158}; 159 160 161// table of Huffman DC coefficients 162static const HUFFMTBL_ENTRY huffm_dc[12] = { 163 { 2, 0X0000 }, { 3, 0X0002 }, { 3, 0X0003 }, { 3, 0X0004 }, 164 { 3, 0X0005 }, { 3, 0X0006 }, { 4, 0X000E }, { 5, 0X001E }, 165 { 6, 0X003E }, { 7, 0X007E }, { 8, 0X00FE }, { 9, 0X01FE } 166}; 167 168 169// table of Huffman AC coefficients 170static const HUFFMTBL_ENTRY huffm_ac[256] = { 171 { 4, 0x000a }, { 2, 0x0000 }, { 2, 0x0001 }, { 3, 0x0004 }, 172 { 4, 0x000b }, { 5, 0x001a }, { 7, 0x0078 }, { 8, 0x00f8 }, 173 { 10, 0x03f6 }, { 16, 0xff82 }, { 16, 0xff83 }, { 0, 0x0000 }, 174 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 175 { 0, 0x0000 }, { 4, 0x000c }, { 5, 0x001b }, { 7, 0x0079 }, 176 { 9, 0x01f6 }, { 11, 0x07f6 }, { 16, 0xff84 }, { 16, 0xff85 }, 177 { 16, 0xff86 }, { 16, 0xff87 }, { 16, 0xff88 }, { 0, 0x0000 }, 178 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 179 { 0, 0x0000 }, { 5, 0x001c }, { 8, 0x00f9 }, { 10, 0x03f7 }, 180 { 12, 0x0ff4 }, { 16, 0xff89 }, { 16, 0xff8a }, { 16, 0xff8b }, 181 { 16, 0xff8c }, { 16, 0xff8d }, { 16, 0xff8e }, { 0, 0x0000 }, 182 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 183 { 0, 0x0000 }, { 6, 0x003a }, { 9, 0x01f7 }, { 12, 0x0ff5 }, 184 { 16, 0xff8f }, { 16, 0xff90 }, { 16, 0xff91 }, { 16, 0xff92 }, 185 { 16, 0xff93 }, { 16, 0xff94 }, { 16, 0xff95 }, { 0, 0x0000 }, 186 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 187 { 0, 0x0000 }, { 6, 0x003b }, { 10, 0x03f8 }, { 16, 0xff96 }, 188 { 16, 0xff97 }, { 16, 0xff98 }, { 16, 0xff99 }, { 16, 0xff9a }, 189 { 16, 0xff9b }, { 16, 0xff9c }, { 16, 0xff9d }, { 0, 0x0000 }, 190 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 191 { 0, 0x0000 }, { 7, 0x007a }, { 11, 0x07f7 }, { 16, 0xff9e }, 192 { 16, 0xff9f }, { 16, 0xffa0 }, { 16, 0xffa1 }, { 16, 0xffa2 }, 193 { 16, 0xffa3 }, { 16, 0xffa4 }, { 16, 0xffa5 }, { 0, 0x0000 }, 194 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 195 { 0, 0x0000 }, { 7, 0x007b }, { 12, 0x0ff6 }, { 16, 0xffa6 }, 196 { 16, 0xffa7 }, { 16, 0xffa8 }, { 16, 0xffa9 }, { 16, 0xffaa }, 197 { 16, 0xffab }, { 16, 0xffac }, { 16, 0xffad }, { 0, 0x0000 }, 198 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 199 { 0, 0x0000 }, { 8, 0x00fa }, { 12, 0x0ff7 }, { 16, 0xffae }, 200 { 16, 0xffaf }, { 16, 0xffb0 }, { 16, 0xffb1 }, { 16, 0xffb2 }, 201 { 16, 0xffb3 }, { 16, 0xffb4 }, { 16, 0xffb5 }, { 0, 0x0000 }, 202 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 203 { 0, 0x0000 }, { 9, 0x01f8 }, { 15, 0x7fc0 }, { 16, 0xffb6 }, 204 { 16, 0xffb7 }, { 16, 0xffb8 }, { 16, 0xffb9 }, { 16, 0xffba }, 205 { 16, 0xffbb }, { 16, 0xffbc }, { 16, 0xffbd }, { 0, 0x0000 }, 206 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 207 { 0, 0x0000 }, { 9, 0x01f9 }, { 16, 0xffbe }, { 16, 0xffbf }, 208 { 16, 0xffc0 }, { 16, 0xffc1 }, { 16, 0xffc2 }, { 16, 0xffc3 }, 209 { 16, 0xffc4 }, { 16, 0xffc5 }, { 16, 0xffc6 }, { 0, 0x0000 }, 210 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 211 { 0, 0x0000 }, { 9, 0x01fa }, { 16, 0xffc7 }, { 16, 0xffc8 }, 212 { 16, 0xffc9 }, { 16, 0xffca }, { 16, 0xffcb }, { 16, 0xffcc }, 213 { 16, 0xffcd }, { 16, 0xffce }, { 16, 0xffcf }, { 0, 0x0000 }, 214 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 215 { 0, 0x0000 }, { 10, 0x03f9 }, { 16, 0xffd0 }, { 16, 0xffd1 }, 216 { 16, 0xffd2 }, { 16, 0xffd3 }, { 16, 0xffd4 }, { 16, 0xffd5 }, 217 { 16, 0xffd6 }, { 16, 0xffd7 }, { 16, 0xffd8 }, { 0, 0x0000 }, 218 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 219 { 0, 0x0000 }, { 10, 0x03fa }, { 16, 0xffd9 }, { 16, 0xffda }, 220 { 16, 0xffdb }, { 16, 0xffdc }, { 16, 0xffdd }, { 16, 0xffde }, 221 { 16, 0xffdf }, { 16, 0xffe0 }, { 16, 0xffe1 }, { 0, 0x0000 }, 222 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 223 { 0, 0x0000 }, { 11, 0x07f8 }, { 16, 0xffe2 }, { 16, 0xffe3 }, 224 { 16, 0xffe4 }, { 16, 0xffe5 }, { 16, 0xffe6 }, { 16, 0xffe7 }, 225 { 16, 0xffe8 }, { 16, 0xffe9 }, { 16, 0xffea }, { 0, 0x0000 }, 226 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 227 { 0, 0x0000 }, { 16, 0xffeb }, { 16, 0xffec }, { 16, 0xffed }, 228 { 16, 0xffee }, { 16, 0xffef }, { 16, 0xfff0 }, { 16, 0xfff1 }, 229 { 16, 0xfff2 }, { 16, 0xfff3 }, { 16, 0xfff4 }, { 0, 0x0000 }, 230 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, 231 { 11, 0x07f9 }, { 16, 0xfff5 }, { 16, 0xfff6 }, { 16, 0xfff7 }, 232 { 16, 0xfff8 }, { 16, 0xfff9 }, { 16, 0xfffa }, { 16, 0xfffb }, 233 { 16, 0xfffc }, { 16, 0xfffd }, { 16, 0xfffe }, { 0, 0x0000 }, 234 { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 } 235 }; 236 237 238#endif 239 240