diff options
| author | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
|---|---|---|
| committer | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
| commit | 386b7d3366f1359a265da207a9cafa3edf553b64 (patch) | |
| tree | c76120c2c138faed822e4ae386be6ef22a738a78 /baseline/source/epic | |
| parent | 54a3f7091a2146b29c73a6fdc4b62a5c4ad7a3d8 (diff) | |
Reorganize and commit all the modified TACLeBench code and run scripts
Diffstat (limited to 'baseline/source/epic')
| -rw-r--r-- | baseline/source/epic/ChangeLog.txt | 56 | ||||
| -rw-r--r-- | baseline/source/epic/epic.c | 1141 | ||||
| -rw-r--r-- | baseline/source/epic/epic.h | 72 |
3 files changed, 1269 insertions, 0 deletions
diff --git a/baseline/source/epic/ChangeLog.txt b/baseline/source/epic/ChangeLog.txt new file mode 100644 index 0000000..5aad4f5 --- /dev/null +++ b/baseline/source/epic/ChangeLog.txt | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | Files: epic.c epic_data.h epic_data.c | ||
| 2 | Original provenience: MediaBench benchmark suite, | ||
| 3 | http://euler.slu.edu/~fritts/mediabench/mb1/index.html | ||
| 4 | |||
| 5 | 2016-02-03: | ||
| 6 | - Added TACLeBench header, also kept original copyright notice | ||
| 7 | - Removed commented-out code | ||
| 8 | - Removed seemingly unnecessary empty lines | ||
| 9 | - Removed unused function, variable, macro and type declarations except where | ||
| 10 | they may help understanding the program. | ||
| 11 | - Slightly changed wording of original comments to keep them in line with the | ||
| 12 | modified/removed code parts. | ||
| 13 | - Separated epic.c to epic.c and epic.h | ||
| 14 | - Added proper '#ifndef __EPIC_DATA_H_' and friends to epic_data.h | ||
| 15 | - Moved around all the following so that they are in the given order just after | ||
| 16 | the header | ||
| 17 | - macro definitions | ||
| 18 | - forward declaration of functions | ||
| 19 | - declaration of global variables | ||
| 20 | - Added a new main function that first calls init function then the old main | ||
| 21 | function sans init | ||
| 22 | - Annotated epic_main() as the entry point of the analysis | ||
| 23 | - Applied code formatting according to the following rules | ||
| 24 | - Lines shall not be wider than 80 characters; whenever possible, appropriate | ||
| 25 | line breaks shall be inserted to keep lines below 80 characters | ||
| 26 | - Indentation is done using whitespaces only, no tabs. Code is indented by | ||
| 27 | two whitespaces | ||
| 28 | - Two empty lines are put between any two functions | ||
| 29 | - In non-empty lists or index expressions, opening '(' and '[' are followed by | ||
| 30 | one whitespace, closing ')' and ']' are preceded by one whitespace | ||
| 31 | - In comma- or colon-separated argument lists, one whitespace is put after | ||
| 32 | each comma/colon | ||
| 33 | - Names of functions and global variables all start with a benchmark-specific | ||
| 34 | prefix (here: epic_) followed by lowercase letter | ||
| 35 | - For pointer types, one whitespace is put before the '*' | ||
| 36 | - Operators within expressions shall be preceded and followed by one | ||
| 37 | whitespace | ||
| 38 | - Code of then- and else-parts of if-then-else statements shall be put in | ||
| 39 | separate lines, not in the same lines as the if-condition or the keyword | ||
| 40 | "else" | ||
| 41 | - Opening braces '{' denoting the beginning of code for some if-else or loop | ||
| 42 | body shall be put at the end of the same line where the keywords "if", | ||
| 43 | "else", "for", "while" etc. occur | ||
| 44 | |||
| 45 | 2016-10-10: | ||
| 46 | - removed unused parameter 'char *edges' in epic_internal_filter() | ||
| 47 | - included input data definition in epic.c, and removed epic_data.c and epic_data.h | ||
| 48 | |||
| 49 | 2016-10-12: | ||
| 50 | - added initial value to variable 'rt_edge_res_pos' (in case the first for loop | ||
| 51 | at line 775) is not executed) | ||
| 52 | - added initial value to variable 'first_col' (in case the first for loop | ||
| 53 | at line 775) is not executed) | ||
| 54 | |||
| 55 | 2016-10_14: | ||
| 56 | - added epic_return() function | ||
diff --git a/baseline/source/epic/epic.c b/baseline/source/epic/epic.c new file mode 100644 index 0000000..13ba442 --- /dev/null +++ b/baseline/source/epic/epic.c | |||
| @@ -0,0 +1,1141 @@ | |||
| 1 | /* | ||
| 2 | |||
| 3 | This program is part of the TACLeBench benchmark suite. | ||
| 4 | Version V 2.0 | ||
| 5 | |||
| 6 | Name: epic | ||
| 7 | |||
| 8 | Author: Designed by Eero P. Simoncelli and Edward H. Adelson | ||
| 9 | Written by Eero P. Simoncelli | ||
| 10 | Developed at the Vision Science Group, The Media Laboratory | ||
| 11 | Copyright 1989, Massachusetts Institute of Technology | ||
| 12 | All rights reserved. | ||
| 13 | |||
| 14 | Function: Efficient Pyramid Image Coder | ||
| 15 | |||
| 16 | Source: MediaBench | ||
| 17 | |||
| 18 | |||
| 19 | Original name: epic | ||
| 20 | |||
| 21 | Changes: no major functional changes | ||
| 22 | |||
| 23 | License: | ||
| 24 | Permission to use, copy, or modify this software and its documentation | ||
| 25 | for educational and research purposes only and without fee is hereby | ||
| 26 | granted, provided that this copyright notice appear on all copies and | ||
| 27 | supporting documentation. For any other uses of this software, in | ||
| 28 | original or modified form, including but not limited to distribution | ||
| 29 | in whole or in part, specific prior permission must be obtained from | ||
| 30 | M.I.T. and the authors. These programs shall not be used, rewritten, | ||
| 31 | or adapted as the basis of a commercial software or hardware product | ||
| 32 | without first obtaining appropriate licenses from M.I.T. M.I.T. makes | ||
| 33 | no representations about the suitability of this software for any | ||
| 34 | purpose. It is provided "as is" without express or implied warranty. | ||
| 35 | */ | ||
| 36 | |||
| 37 | |||
| 38 | #include "../extra.h" | ||
| 39 | #include "epic.h" | ||
| 40 | |||
| 41 | #define X_SIZE 64 | ||
| 42 | #define Y_SIZE 64 | ||
| 43 | |||
| 44 | float epic_image[] = { | ||
| 45 | 0x89, 0x88, 0x87, 0x86, 0x89, 0x87, 0x84, 0x86, | ||
| 46 | 0x83, 0x89, 0x82, 0x83, 0x84, 0x81, 0x80, 0x80, | ||
| 47 | 0x81, 0x83, 0x88, 0x8A, 0x8E, 0x90, 0x96, 0x98, | ||
| 48 | 0x95, 0x92, 0x93, 0x88, 0x78, 0x7B, 0x60, 0x52, | ||
| 49 | 0x41, 0x3F, 0x3A, 0x46, 0x46, 0x48, 0x49, 0x48, | ||
| 50 | 0x4F, 0x4A, 0x49, 0x50, 0x4C, 0x4B, 0x4D, 0x4C, | ||
| 51 | 0x4E, 0x4E, 0x4A, 0x49, 0x4D, 0x54, 0x50, 0x59, | ||
| 52 | 0x51, 0x5A, 0x5E, 0x5A, 0x5D, 0x61, 0x59, 0x65, | ||
| 53 | 0x63, 0x65, 0x60, 0x62, 0x68, 0x67, 0x64, 0x61, | ||
| 54 | 0x64, 0x5E, 0x66, 0x63, 0x63, 0x61, 0x67, 0x68, | ||
| 55 | 0x62, 0x64, 0x66, 0x67, 0x64, 0x63, 0x66, 0x64, | ||
| 56 | 0x67, 0x66, 0x65, 0x64, 0x64, 0x6A, 0x66, 0x65, | ||
| 57 | 0x68, 0x66, 0x69, 0x67, 0x6A, 0x66, 0x68, 0x66, | ||
| 58 | 0x6C, 0x65, 0x69, 0x64, 0x65, 0x64, 0x66, 0x62, | ||
| 59 | 0x63, 0x68, 0x68, 0x65, 0x64, 0x64, 0x62, 0x63, | ||
| 60 | 0x68, 0x65, 0x66, 0x69, 0x66, 0x65, 0x61, 0x66, | ||
| 61 | 0x6E, 0x69, 0x64, 0x61, 0x63, 0x63, 0x66, 0x63, | ||
| 62 | 0x62, 0x64, 0x60, 0x68, 0x63, 0x61, 0x62, 0x65, | ||
| 63 | 0x60, 0x63, 0x60, 0x62, 0x60, 0x5E, 0x61, 0x62, | ||
| 64 | 0x5D, 0x5C, 0x57, 0x5B, 0x58, 0x53, 0x54, 0x47, | ||
| 65 | 0x49, 0x54, 0x5C, 0x6B, 0x6F, 0x77, 0x7F, 0x80, | ||
| 66 | 0x88, 0x8A, 0x8C, 0x85, 0x7A, 0x7D, 0x7F, 0x7D, | ||
| 67 | 0x80, 0x80, 0x81, 0x80, 0x85, 0x82, 0x81, 0x7E, | ||
| 68 | 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x83, 0x7F, | ||
| 69 | 0x81, 0x83, 0x87, 0x82, 0x83, 0x88, 0x84, 0x82, | ||
| 70 | 0x82, 0x8A, 0xB3, 0xC5, 0xCD, 0xCF, 0xD4, 0xD3, | ||
| 71 | 0xD6, 0xCC, 0xB5, 0x80, 0x4E, 0x48, 0x4D, 0x4D, | ||
| 72 | 0x57, 0x5A, 0x59, 0x5C, 0x62, 0x58, 0x5C, 0x5B, | ||
| 73 | 0x5B, 0x62, 0x5D, 0x5C, 0x59, 0x5C, 0x5A, 0x59, | ||
| 74 | 0x5D, 0x5F, 0x5B, 0x5F, 0x60, 0x5E, 0x5E, 0x57, | ||
| 75 | 0x5F, 0x5F, 0x60, 0x61, 0x5C, 0x61, 0x60, 0x5B, | ||
| 76 | 0x56, 0x56, 0x57, 0x58, 0x6E, 0x91, 0x96, 0x7E, | ||
| 77 | 0x89, 0x88, 0x87, 0x86, 0x8A, 0x87, 0x84, 0x87, | ||
| 78 | 0x83, 0x89, 0x82, 0x83, 0x84, 0x81, 0x80, 0x80, | ||
| 79 | 0x81, 0x83, 0x88, 0x8A, 0x8E, 0x90, 0x96, 0x98, | ||
| 80 | 0x94, 0x93, 0x93, 0x88, 0x78, 0x7B, 0x60, 0x52, | ||
| 81 | 0x41, 0x3F, 0x39, 0x46, 0x46, 0x48, 0x49, 0x47, | ||
| 82 | 0x50, 0x4A, 0x49, 0x50, 0x4D, 0x4B, 0x4D, 0x4C, | ||
| 83 | 0x4E, 0x4E, 0x4A, 0x49, 0x4E, 0x54, 0x4F, 0x59, | ||
| 84 | 0x51, 0x5A, 0x5E, 0x5A, 0x5D, 0x61, 0x59, 0x65, | ||
| 85 | 0x63, 0x65, 0x5F, 0x62, 0x68, 0x67, 0x64, 0x61, | ||
| 86 | 0x64, 0x5E, 0x66, 0x63, 0x63, 0x61, 0x67, 0x69, | ||
| 87 | 0x61, 0x63, 0x66, 0x67, 0x65, 0x63, 0x66, 0x64, | ||
| 88 | 0x67, 0x67, 0x65, 0x64, 0x64, 0x6A, 0x66, 0x65, | ||
| 89 | 0x68, 0x66, 0x69, 0x67, 0x6A, 0x67, 0x69, 0x66, | ||
| 90 | 0x6C, 0x65, 0x69, 0x64, 0x65, 0x64, 0x66, 0x62, | ||
| 91 | 0x63, 0x68, 0x68, 0x66, 0x64, 0x64, 0x62, 0x63, | ||
| 92 | 0x68, 0x65, 0x66, 0x6A, 0x67, 0x65, 0x60, 0x66, | ||
| 93 | 0x6F, 0x6A, 0x64, 0x61, 0x64, 0x63, 0x66, 0x63, | ||
| 94 | 0x62, 0x64, 0x60, 0x69, 0x64, 0x61, 0x62, 0x65, | ||
| 95 | 0x60, 0x63, 0x60, 0x62, 0x60, 0x5E, 0x61, 0x62, | ||
| 96 | 0x5D, 0x5C, 0x57, 0x5B, 0x59, 0x53, 0x54, 0x47, | ||
| 97 | 0x49, 0x54, 0x5C, 0x6B, 0x6F, 0x77, 0x7F, 0x80, | ||
| 98 | 0x88, 0x8A, 0x8C, 0x85, 0x7A, 0x7D, 0x7F, 0x7C, | ||
| 99 | 0x80, 0x80, 0x81, 0x80, 0x85, 0x82, 0x81, 0x7E, | ||
| 100 | 0x80, 0x7F, 0x7F, 0x7E, 0x7D, 0x7E, 0x83, 0x7F, | ||
| 101 | 0x81, 0x83, 0x87, 0x81, 0x83, 0x88, 0x84, 0x82, | ||
| 102 | 0x82, 0x8A, 0xB5, 0xC5, 0xCD, 0xCF, 0xD4, 0xD3, | ||
| 103 | 0xD6, 0xCC, 0xB4, 0x7E, 0x4D, 0x48, 0x4E, 0x4D, | ||
| 104 | 0x57, 0x5A, 0x59, 0x5C, 0x62, 0x58, 0x5C, 0x5B, | ||
| 105 | 0x5B, 0x62, 0x5D, 0x5C, 0x59, 0x5C, 0x5A, 0x59, | ||
| 106 | 0x5D, 0x5F, 0x5B, 0x5F, 0x60, 0x5E, 0x5E, 0x57, | ||
| 107 | 0x5F, 0x5F, 0x60, 0x61, 0x5C, 0x61, 0x60, 0x5B, | ||
| 108 | 0x56, 0x56, 0x57, 0x58, 0x6F, 0x94, 0x9A, 0x82, | ||
| 109 | 0x88, 0x89, 0x87, 0x86, 0x88, 0x86, 0x84, 0x85, | ||
| 110 | 0x82, 0x87, 0x82, 0x81, 0x83, 0x81, 0x7F, 0x80, | ||
| 111 | 0x82, 0x82, 0x87, 0x8A, 0x8F, 0x90, 0x95, 0x98, | ||
| 112 | 0x95, 0x92, 0x92, 0x88, 0x79, 0x77, 0x5F, 0x51, | ||
| 113 | 0x41, 0x3E, 0x3B, 0x44, 0x44, 0x46, 0x49, 0x4A, | ||
| 114 | 0x4C, 0x49, 0x49, 0x4E, 0x4A, 0x4A, 0x4E, 0x4A, | ||
| 115 | 0x4D, 0x4D, 0x48, 0x4A, 0x4C, 0x52, 0x52, 0x58, | ||
| 116 | 0x52, 0x59, 0x5E, 0x5A, 0x5D, 0x5F, 0x59, 0x64, | ||
| 117 | 0x64, 0x64, 0x62, 0x61, 0x66, 0x66, 0x64, 0x60, | ||
| 118 | 0x62, 0x5F, 0x65, 0x63, 0x62, 0x62, 0x65, 0x66, | ||
| 119 | 0x62, 0x65, 0x67, 0x66, 0x64, 0x64, 0x65, 0x65, | ||
| 120 | 0x66, 0x65, 0x65, 0x63, 0x63, 0x67, 0x65, 0x64, | ||
| 121 | 0x67, 0x67, 0x68, 0x66, 0x6A, 0x66, 0x67, 0x66, | ||
| 122 | 0x6C, 0x65, 0x6A, 0x64, 0x64, 0x63, 0x66, 0x62, | ||
| 123 | 0x63, 0x67, 0x69, 0x65, 0x64, 0x63, 0x62, 0x63, | ||
| 124 | 0x68, 0x65, 0x66, 0x69, 0x66, 0x65, 0x61, 0x65, | ||
| 125 | 0x6C, 0x69, 0x64, 0x61, 0x62, 0x62, 0x64, 0x63, | ||
| 126 | 0x61, 0x63, 0x60, 0x66, 0x63, 0x61, 0x62, 0x65, | ||
| 127 | 0x60, 0x62, 0x60, 0x62, 0x60, 0x5E, 0x60, 0x61, | ||
| 128 | 0x5C, 0x5C, 0x59, 0x5B, 0x57, 0x53, 0x52, 0x47, | ||
| 129 | 0x48, 0x54, 0x5C, 0x69, 0x6E, 0x77, 0x7D, 0x80, | ||
| 130 | 0x88, 0x89, 0x8C, 0x84, 0x7B, 0x7D, 0x7E, 0x7D, | ||
| 131 | 0x7F, 0x80, 0x81, 0x7F, 0x85, 0x82, 0x80, 0x7E, | ||
| 132 | 0x7F, 0x7E, 0x7F, 0x7F, 0x7E, 0x7F, 0x82, 0x7F, | ||
| 133 | 0x81, 0x83, 0x86, 0x82, 0x83, 0x87, 0x84, 0x82, | ||
| 134 | 0x81, 0x88, 0xB0, 0xC5, 0xCD, 0xCF, 0xD4, 0xD4, | ||
| 135 | 0xD6, 0xCD, 0xB8, 0x86, 0x51, 0x47, 0x4B, 0x4D, | ||
| 136 | 0x56, 0x59, 0x59, 0x5B, 0x5F, 0x59, 0x5C, 0x5D, | ||
| 137 | 0x5B, 0x62, 0x5D, 0x5B, 0x5B, 0x5C, 0x5B, 0x5A, | ||
| 138 | 0x5E, 0x5F, 0x5D, 0x5F, 0x60, 0x5D, 0x5F, 0x58, | ||
| 139 | 0x5E, 0x5F, 0x5F, 0x5F, 0x5B, 0x60, 0x60, 0x5C, | ||
| 140 | 0x57, 0x56, 0x59, 0x5B, 0x6E, 0x8A, 0x87, 0x6C, | ||
| 141 | 0x84, 0x88, 0x86, 0x84, 0x87, 0x85, 0x84, 0x82, | ||
| 142 | 0x80, 0x84, 0x82, 0x7E, 0x82, 0x7F, 0x7C, 0x80, | ||
| 143 | 0x84, 0x80, 0x84, 0x8B, 0x90, 0x92, 0x93, 0x95, | ||
| 144 | 0x97, 0x91, 0x8E, 0x86, 0x79, 0x6F, 0x5B, 0x4F, | ||
| 145 | 0x41, 0x3A, 0x3D, 0x3F, 0x40, 0x42, 0x48, 0x4B, | ||
| 146 | 0x46, 0x48, 0x47, 0x4A, 0x46, 0x49, 0x4D, 0x48, | ||
| 147 | 0x48, 0x4D, 0x46, 0x4C, 0x4B, 0x4F, 0x55, 0x55, | ||
| 148 | 0x54, 0x58, 0x5D, 0x5B, 0x5D, 0x5C, 0x5A, 0x61, | ||
| 149 | 0x62, 0x60, 0x65, 0x61, 0x63, 0x65, 0x64, 0x5F, | ||
| 150 | 0x60, 0x61, 0x63, 0x63, 0x61, 0x63, 0x61, 0x63, | ||
| 151 | 0x64, 0x66, 0x67, 0x66, 0x64, 0x65, 0x65, 0x67, | ||
| 152 | 0x64, 0x64, 0x66, 0x63, 0x62, 0x64, 0x63, 0x62, | ||
| 153 | 0x65, 0x67, 0x66, 0x65, 0x68, 0x65, 0x64, 0x64, | ||
| 154 | 0x69, 0x63, 0x69, 0x65, 0x63, 0x61, 0x63, 0x61, | ||
| 155 | 0x63, 0x68, 0x6B, 0x65, 0x63, 0x61, 0x62, 0x64, | ||
| 156 | 0x66, 0x64, 0x65, 0x66, 0x63, 0x63, 0x63, 0x65, | ||
| 157 | 0x65, 0x67, 0x65, 0x60, 0x60, 0x5E, 0x60, 0x64, | ||
| 158 | 0x5E, 0x63, 0x60, 0x61, 0x5F, 0x60, 0x61, 0x63, | ||
| 159 | 0x62, 0x62, 0x5E, 0x60, 0x61, 0x60, 0x5E, 0x5D, | ||
| 160 | 0x5C, 0x5D, 0x5C, 0x5A, 0x54, 0x51, 0x4E, 0x4A, | ||
| 161 | 0x46, 0x50, 0x59, 0x62, 0x6A, 0x75, 0x79, 0x80, | ||
| 162 | 0x86, 0x86, 0x8B, 0x83, 0x7F, 0x7E, 0x7E, 0x7E, | ||
| 163 | 0x7E, 0x81, 0x81, 0x7E, 0x83, 0x82, 0x80, 0x80, | ||
| 164 | 0x7F, 0x7F, 0x7F, 0x81, 0x81, 0x81, 0x7F, 0x7E, | ||
| 165 | 0x80, 0x82, 0x84, 0x83, 0x81, 0x84, 0x83, 0x82, | ||
| 166 | 0x7F, 0x82, 0x9D, 0xBD, 0xC9, 0xCE, 0xD2, 0xD4, | ||
| 167 | 0xD6, 0xD2, 0xC4, 0xA1, 0x68, 0x49, 0x48, 0x4D, | ||
| 168 | 0x54, 0x56, 0x59, 0x5A, 0x5A, 0x5B, 0x5B, 0x60, | ||
| 169 | 0x5B, 0x60, 0x5B, 0x5B, 0x5C, 0x5C, 0x5D, 0x5D, | ||
| 170 | 0x60, 0x5C, 0x5E, 0x5E, 0x5E, 0x5B, 0x5E, 0x5C, | ||
| 171 | 0x5D, 0x5E, 0x5F, 0x5C, 0x5C, 0x60, 0x61, 0x5E, | ||
| 172 | 0x5A, 0x58, 0x5F, 0x62, 0x5F, 0x5D, 0x48, 0x32, | ||
| 173 | 0x81, 0x85, 0x85, 0x81, 0x86, 0x83, 0x84, 0x80, | ||
| 174 | 0x7F, 0x84, 0x83, 0x7E, 0x80, 0x7E, 0x7D, 0x80, | ||
| 175 | 0x82, 0x7F, 0x85, 0x8D, 0x91, 0x93, 0x92, 0x95, | ||
| 176 | 0x95, 0x8F, 0x8C, 0x84, 0x76, 0x6B, 0x5D, 0x50, | ||
| 177 | 0x41, 0x38, 0x39, 0x3B, 0x41, 0x41, 0x46, 0x47, | ||
| 178 | 0x45, 0x47, 0x44, 0x47, 0x45, 0x4A, 0x49, 0x48, | ||
| 179 | 0x45, 0x4C, 0x48, 0x4C, 0x4E, 0x4E, 0x51, 0x56, | ||
| 180 | 0x56, 0x59, 0x5A, 0x5C, 0x5C, 0x5E, 0x5A, 0x60, | ||
| 181 | 0x5D, 0x60, 0x62, 0x61, 0x63, 0x64, 0x62, 0x5F, | ||
| 182 | 0x61, 0x62, 0x64, 0x62, 0x61, 0x64, 0x61, 0x64, | ||
| 183 | 0x63, 0x65, 0x65, 0x67, 0x63, 0x66, 0x65, 0x64, | ||
| 184 | 0x63, 0x65, 0x66, 0x61, 0x60, 0x67, 0x64, 0x62, | ||
| 185 | 0x63, 0x65, 0x64, 0x65, 0x65, 0x63, 0x62, 0x63, | ||
| 186 | 0x63, 0x61, 0x67, 0x66, 0x63, 0x5F, 0x5E, 0x60, | ||
| 187 | 0x63, 0x66, 0x6A, 0x64, 0x62, 0x60, 0x64, 0x63, | ||
| 188 | 0x65, 0x62, 0x62, 0x62, 0x60, 0x62, 0x63, 0x63, | ||
| 189 | 0x61, 0x64, 0x65, 0x60, 0x60, 0x5D, 0x61, 0x62, | ||
| 190 | 0x5D, 0x61, 0x5E, 0x60, 0x5C, 0x60, 0x5F, 0x60, | ||
| 191 | 0x61, 0x61, 0x5F, 0x60, 0x61, 0x61, 0x5E, 0x5D, | ||
| 192 | 0x5D, 0x5B, 0x5A, 0x58, 0x52, 0x51, 0x4E, 0x4D, | ||
| 193 | 0x47, 0x4A, 0x51, 0x5B, 0x66, 0x70, 0x76, 0x7C, | ||
| 194 | 0x81, 0x84, 0x8A, 0x85, 0x81, 0x80, 0x7F, 0x7C, | ||
| 195 | 0x7F, 0x82, 0x82, 0x81, 0x82, 0x82, 0x81, 0x84, | ||
| 196 | 0x80, 0x82, 0x81, 0x80, 0x81, 0x81, 0x80, 0x80, | ||
| 197 | 0x81, 0x82, 0x81, 0x82, 0x7F, 0x81, 0x80, 0x81, | ||
| 198 | 0x7F, 0x7D, 0x86, 0xAB, 0xC1, 0xCB, 0xCF, 0xD2, | ||
| 199 | 0xD3, 0xD5, 0xCF, 0xBA, 0x8A, 0x57, 0x48, 0x4D, | ||
| 200 | 0x51, 0x52, 0x55, 0x5A, 0x5A, 0x5B, 0x59, 0x5F, | ||
| 201 | 0x59, 0x5C, 0x59, 0x5C, 0x5A, 0x5A, 0x5B, 0x5C, | ||
| 202 | 0x5F, 0x5C, 0x5D, 0x5B, 0x5D, 0x5C, 0x5C, 0x5E, | ||
| 203 | 0x5C, 0x5D, 0x61, 0x5E, 0x5D, 0x5F, 0x62, 0x61, | ||
| 204 | 0x61, 0x5F, 0x60, 0x5A, 0x3D, 0x28, 0x19, 0x13, | ||
| 205 | 0x82, 0x84, 0x83, 0x7F, 0x84, 0x83, 0x83, 0x81, | ||
| 206 | 0x80, 0x83, 0x84, 0x82, 0x7F, 0x7F, 0x80, 0x7F, | ||
| 207 | 0x81, 0x83, 0x87, 0x8E, 0x92, 0x91, 0x93, 0x94, | ||
| 208 | 0x91, 0x8F, 0x8E, 0x83, 0x72, 0x6A, 0x60, 0x4F, | ||
| 209 | 0x3F, 0x36, 0x37, 0x3D, 0x42, 0x3F, 0x43, 0x47, | ||
| 210 | 0x45, 0x45, 0x46, 0x46, 0x47, 0x4B, 0x44, 0x46, | ||
| 211 | 0x44, 0x47, 0x48, 0x4B, 0x51, 0x4D, 0x4F, 0x56, | ||
| 212 | 0x56, 0x5A, 0x5A, 0x5B, 0x5B, 0x5D, 0x5B, 0x5F, | ||
| 213 | 0x5C, 0x62, 0x5D, 0x61, 0x62, 0x63, 0x60, 0x63, | ||
| 214 | 0x62, 0x63, 0x64, 0x60, 0x61, 0x64, 0x60, 0x66, | ||
| 215 | 0x5F, 0x63, 0x65, 0x67, 0x63, 0x63, 0x63, 0x63, | ||
| 216 | 0x63, 0x65, 0x63, 0x61, 0x62, 0x66, 0x63, 0x63, | ||
| 217 | 0x62, 0x63, 0x61, 0x62, 0x64, 0x61, 0x64, 0x63, | ||
| 218 | 0x61, 0x64, 0x66, 0x63, 0x63, 0x5E, 0x5D, 0x5E, | ||
| 219 | 0x63, 0x61, 0x64, 0x63, 0x63, 0x60, 0x63, 0x62, | ||
| 220 | 0x64, 0x62, 0x63, 0x61, 0x62, 0x61, 0x63, 0x60, | ||
| 221 | 0x61, 0x61, 0x63, 0x63, 0x61, 0x62, 0x62, 0x60, | ||
| 222 | 0x5E, 0x5F, 0x5F, 0x61, 0x5D, 0x61, 0x5F, 0x5F, | ||
| 223 | 0x5F, 0x5E, 0x61, 0x60, 0x5F, 0x5F, 0x62, 0x61, | ||
| 224 | 0x5D, 0x5A, 0x56, 0x58, 0x54, 0x52, 0x51, 0x4F, | ||
| 225 | 0x4C, 0x47, 0x4B, 0x57, 0x61, 0x6C, 0x72, 0x79, | ||
| 226 | 0x7E, 0x82, 0x89, 0x87, 0x82, 0x82, 0x7F, 0x7E, | ||
| 227 | 0x80, 0x82, 0x86, 0x84, 0x85, 0x84, 0x83, 0x85, | ||
| 228 | 0x82, 0x82, 0x82, 0x80, 0x81, 0x83, 0x82, 0x80, | ||
| 229 | 0x80, 0x83, 0x80, 0x81, 0x7F, 0x81, 0x7F, 0x81, | ||
| 230 | 0x83, 0x7A, 0x7D, 0x95, 0xB7, 0xC6, 0xCD, 0xD0, | ||
| 231 | 0xD3, 0xD5, 0xD4, 0xC9, 0xA9, 0x73, 0x4B, 0x48, | ||
| 232 | 0x4D, 0x50, 0x53, 0x57, 0x59, 0x5A, 0x57, 0x5C, | ||
| 233 | 0x5B, 0x5A, 0x59, 0x5B, 0x59, 0x58, 0x58, 0x5A, | ||
| 234 | 0x5F, 0x5D, 0x5B, 0x58, 0x5D, 0x5A, 0x5C, 0x5D, | ||
| 235 | 0x5D, 0x5E, 0x5E, 0x5F, 0x5C, 0x5D, 0x62, 0x65, | ||
| 236 | 0x66, 0x65, 0x55, 0x3D, 0x20, 0x13, 0x12, 0x17, | ||
| 237 | 0x83, 0x83, 0x80, 0x81, 0x84, 0x82, 0x81, 0x81, | ||
| 238 | 0x81, 0x83, 0x81, 0x83, 0x7F, 0x80, 0x80, 0x7E, | ||
| 239 | 0x83, 0x8A, 0x8A, 0x90, 0x93, 0x91, 0x92, 0x92, | ||
| 240 | 0x8F, 0x90, 0x8D, 0x83, 0x71, 0x69, 0x5D, 0x4D, | ||
| 241 | 0x41, 0x37, 0x37, 0x3F, 0x3C, 0x3F, 0x42, 0x48, | ||
| 242 | 0x44, 0x46, 0x49, 0x4B, 0x4A, 0x4A, 0x41, 0x45, | ||
| 243 | 0x45, 0x44, 0x44, 0x48, 0x50, 0x4C, 0x51, 0x53, | ||
| 244 | 0x57, 0x57, 0x5A, 0x5A, 0x5D, 0x5B, 0x5D, 0x5D, | ||
| 245 | 0x5C, 0x5E, 0x5E, 0x62, 0x5E, 0x62, 0x60, 0x65, | ||
| 246 | 0x63, 0x63, 0x61, 0x5F, 0x61, 0x63, 0x5E, 0x65, | ||
| 247 | 0x5E, 0x61, 0x66, 0x63, 0x63, 0x61, 0x63, 0x65, | ||
| 248 | 0x61, 0x62, 0x62, 0x64, 0x64, 0x63, 0x62, 0x62, | ||
| 249 | 0x60, 0x63, 0x62, 0x61, 0x64, 0x61, 0x64, 0x63, | ||
| 250 | 0x62, 0x66, 0x66, 0x63, 0x64, 0x5E, 0x60, 0x5F, | ||
| 251 | 0x63, 0x62, 0x60, 0x63, 0x62, 0x60, 0x62, 0x62, | ||
| 252 | 0x64, 0x66, 0x66, 0x63, 0x65, 0x61, 0x65, 0x61, | ||
| 253 | 0x60, 0x61, 0x61, 0x64, 0x61, 0x63, 0x63, 0x61, | ||
| 254 | 0x61, 0x5F, 0x61, 0x61, 0x5F, 0x62, 0x5E, 0x60, | ||
| 255 | 0x5F, 0x5B, 0x5F, 0x61, 0x5E, 0x5F, 0x65, 0x60, | ||
| 256 | 0x5A, 0x5B, 0x58, 0x59, 0x56, 0x53, 0x52, 0x50, | ||
| 257 | 0x4E, 0x4B, 0x47, 0x51, 0x5A, 0x67, 0x6E, 0x77, | ||
| 258 | 0x7B, 0x7F, 0x87, 0x87, 0x86, 0x84, 0x82, 0x83, | ||
| 259 | 0x83, 0x83, 0x86, 0x87, 0x89, 0x88, 0x87, 0x84, | ||
| 260 | 0x84, 0x83, 0x80, 0x80, 0x81, 0x84, 0x81, 0x81, | ||
| 261 | 0x80, 0x81, 0x7F, 0x7F, 0x7F, 0x82, 0x80, 0x81, | ||
| 262 | 0x84, 0x7C, 0x7E, 0x82, 0xA5, 0xC0, 0xCA, 0xCF, | ||
| 263 | 0xD3, 0xD5, 0xD5, 0xD2, 0xBF, 0x96, 0x5C, 0x47, | ||
| 264 | 0x4B, 0x4E, 0x50, 0x55, 0x55, 0x58, 0x57, 0x5A, | ||
| 265 | 0x5D, 0x5A, 0x5C, 0x59, 0x5C, 0x55, 0x57, 0x5B, | ||
| 266 | 0x60, 0x5B, 0x5B, 0x59, 0x5B, 0x5B, 0x5F, 0x5B, | ||
| 267 | 0x5D, 0x5E, 0x5B, 0x5D, 0x5D, 0x5D, 0x65, 0x68, | ||
| 268 | 0x63, 0x5A, 0x3A, 0x23, 0x19, 0x12, 0x17, 0x19, | ||
| 269 | 0x83, 0x83, 0x81, 0x84, 0x82, 0x80, 0x82, 0x81, | ||
| 270 | 0x81, 0x81, 0x80, 0x81, 0x80, 0x7F, 0x7E, 0x82, | ||
| 271 | 0x86, 0x8C, 0x90, 0x91, 0x91, 0x92, 0x91, 0x92, | ||
| 272 | 0x90, 0x8F, 0x87, 0x82, 0x72, 0x69, 0x5D, 0x4E, | ||
| 273 | 0x42, 0x39, 0x37, 0x3E, 0x3A, 0x42, 0x44, 0x43, | ||
| 274 | 0x46, 0x4B, 0x49, 0x4E, 0x4A, 0x49, 0x42, 0x48, | ||
| 275 | 0x48, 0x44, 0x42, 0x45, 0x4C, 0x4D, 0x51, 0x51, | ||
| 276 | 0x55, 0x56, 0x5A, 0x5C, 0x5E, 0x5C, 0x5C, 0x5F, | ||
| 277 | 0x5D, 0x5C, 0x60, 0x60, 0x5C, 0x62, 0x62, 0x64, | ||
| 278 | 0x63, 0x61, 0x61, 0x60, 0x61, 0x61, 0x60, 0x63, | ||
| 279 | 0x61, 0x61, 0x65, 0x62, 0x62, 0x65, 0x65, 0x65, | ||
| 280 | 0x61, 0x62, 0x64, 0x65, 0x66, 0x63, 0x64, 0x5F, | ||
| 281 | 0x5F, 0x62, 0x65, 0x64, 0x64, 0x63, 0x62, 0x65, | ||
| 282 | 0x63, 0x64, 0x65, 0x62, 0x65, 0x60, 0x63, 0x60, | ||
| 283 | 0x61, 0x66, 0x61, 0x64, 0x5F, 0x60, 0x63, 0x62, | ||
| 284 | 0x64, 0x67, 0x66, 0x67, 0x66, 0x61, 0x65, 0x64, | ||
| 285 | 0x60, 0x65, 0x61, 0x62, 0x61, 0x60, 0x64, 0x5F, | ||
| 286 | 0x63, 0x61, 0x60, 0x5F, 0x5F, 0x5E, 0x5D, 0x60, | ||
| 287 | 0x61, 0x5D, 0x60, 0x61, 0x60, 0x60, 0x62, 0x5F, | ||
| 288 | 0x59, 0x5D, 0x5B, 0x5A, 0x57, 0x54, 0x51, 0x56, | ||
| 289 | 0x4E, 0x4E, 0x48, 0x4C, 0x55, 0x60, 0x6E, 0x75, | ||
| 290 | 0x79, 0x7D, 0x84, 0x87, 0x89, 0x89, 0x87, 0x85, | ||
| 291 | 0x84, 0x86, 0x87, 0x8A, 0x89, 0x8A, 0x8A, 0x85, | ||
| 292 | 0x82, 0x84, 0x82, 0x81, 0x83, 0x83, 0x7D, 0x80, | ||
| 293 | 0x80, 0x7E, 0x7F, 0x7C, 0x7E, 0x7F, 0x80, 0x80, | ||
| 294 | 0x7F, 0x80, 0x7F, 0x7B, 0x8D, 0xB5, 0xC5, 0xCC, | ||
| 295 | 0xD2, 0xD4, 0xD5, 0xD6, 0xCC, 0xB4, 0x7F, 0x4E, | ||
| 296 | 0x4C, 0x4B, 0x4F, 0x51, 0x56, 0x55, 0x54, 0x59, | ||
| 297 | 0x5C, 0x59, 0x5D, 0x59, 0x5B, 0x57, 0x57, 0x5D, | ||
| 298 | 0x5D, 0x58, 0x5D, 0x5D, 0x5A, 0x5F, 0x61, 0x5D, | ||
| 299 | 0x5F, 0x5E, 0x5D, 0x60, 0x60, 0x63, 0x69, 0x62, | ||
| 300 | 0x50, 0x38, 0x1D, 0x1A, 0x1C, 0x17, 0x19, 0x18, | ||
| 301 | 0x81, 0x82, 0x83, 0x82, 0x81, 0x7E, 0x83, 0x83, | ||
| 302 | 0x80, 0x82, 0x82, 0x80, 0x80, 0x7D, 0x80, 0x88, | ||
| 303 | 0x8A, 0x8D, 0x93, 0x8F, 0x91, 0x91, 0x90, 0x8F, | ||
| 304 | 0x90, 0x8C, 0x84, 0x81, 0x71, 0x69, 0x5E, 0x4B, | ||
| 305 | 0x40, 0x3A, 0x38, 0x3B, 0x3B, 0x45, 0x44, 0x3E, | ||
| 306 | 0x46, 0x4B, 0x4A, 0x4B, 0x45, 0x47, 0x45, 0x49, | ||
| 307 | 0x44, 0x45, 0x42, 0x47, 0x4A, 0x4F, 0x52, 0x51, | ||
| 308 | 0x53, 0x57, 0x59, 0x5D, 0x5B, 0x5E, 0x5A, 0x60, | ||
| 309 | 0x5F, 0x5F, 0x5F, 0x61, 0x5C, 0x61, 0x64, 0x63, | ||
| 310 | 0x62, 0x60, 0x62, 0x62, 0x63, 0x60, 0x61, 0x60, | ||
| 311 | 0x64, 0x64, 0x66, 0x63, 0x61, 0x68, 0x65, 0x65, | ||
| 312 | 0x63, 0x66, 0x65, 0x63, 0x65, 0x63, 0x64, 0x61, | ||
| 313 | 0x60, 0x60, 0x62, 0x66, 0x64, 0x61, 0x63, 0x65, | ||
| 314 | 0x64, 0x62, 0x66, 0x60, 0x67, 0x63, 0x61, 0x5E, | ||
| 315 | 0x5D, 0x66, 0x65, 0x63, 0x60, 0x60, 0x61, 0x62, | ||
| 316 | 0x66, 0x68, 0x66, 0x6B, 0x65, 0x62, 0x65, 0x63, | ||
| 317 | 0x63, 0x64, 0x63, 0x62, 0x60, 0x61, 0x62, 0x5D, | ||
| 318 | 0x62, 0x62, 0x61, 0x5E, 0x5F, 0x5A, 0x5E, 0x5E, | ||
| 319 | 0x61, 0x60, 0x62, 0x60, 0x62, 0x5E, 0x5F, 0x60, | ||
| 320 | 0x5E, 0x5F, 0x59, 0x5B, 0x56, 0x54, 0x51, 0x59, | ||
| 321 | 0x4E, 0x4E, 0x49, 0x47, 0x52, 0x5B, 0x6B, 0x72, | ||
| 322 | 0x76, 0x7C, 0x82, 0x86, 0x87, 0x8E, 0x89, 0x85, | ||
| 323 | 0x85, 0x87, 0x88, 0x8D, 0x89, 0x89, 0x8A, 0x89, | ||
| 324 | 0x82, 0x84, 0x85, 0x86, 0x86, 0x80, 0x7E, 0x7E, | ||
| 325 | 0x7E, 0x7F, 0x81, 0x7D, 0x7F, 0x7C, 0x7E, 0x7D, | ||
| 326 | 0x7E, 0x80, 0x7D, 0x7C, 0x7B, 0x9F, 0xBD, 0xC9, | ||
| 327 | 0xD0, 0xD3, 0xD5, 0xD6, 0xD3, 0xC6, 0xA3, 0x64, | ||
| 328 | 0x4C, 0x47, 0x50, 0x4D, 0x58, 0x53, 0x52, 0x58, | ||
| 329 | 0x59, 0x5A, 0x5C, 0x59, 0x5B, 0x5E, 0x58, 0x5E, | ||
| 330 | 0x5B, 0x5D, 0x5F, 0x5C, 0x5B, 0x60, 0x63, 0x5F, | ||
| 331 | 0x62, 0x62, 0x60, 0x64, 0x65, 0x68, 0x63, 0x4F, | ||
| 332 | 0x30, 0x17, 0x14, 0x13, 0x17, 0x1A, 0x15, 0x17, | ||
| 333 | 0x82, 0x83, 0x83, 0x80, 0x82, 0x7F, 0x83, 0x86, | ||
| 334 | 0x83, 0x86, 0x81, 0x81, 0x80, 0x7F, 0x85, 0x88, | ||
| 335 | 0x8C, 0x8F, 0x92, 0x8E, 0x93, 0x8F, 0x8E, 0x8B, | ||
| 336 | 0x8E, 0x8A, 0x85, 0x7E, 0x71, 0x68, 0x5E, 0x4F, | ||
| 337 | 0x42, 0x3E, 0x38, 0x39, 0x3D, 0x45, 0x42, 0x42, | ||
| 338 | 0x44, 0x47, 0x4B, 0x49, 0x45, 0x46, 0x47, 0x46, | ||
| 339 | 0x42, 0x45, 0x44, 0x48, 0x4A, 0x50, 0x52, 0x51, | ||
| 340 | 0x55, 0x54, 0x57, 0x5A, 0x5A, 0x5D, 0x57, 0x5F, | ||
| 341 | 0x5E, 0x60, 0x5D, 0x61, 0x5E, 0x61, 0x64, 0x62, | ||
| 342 | 0x60, 0x62, 0x62, 0x63, 0x63, 0x62, 0x62, 0x61, | ||
| 343 | 0x63, 0x62, 0x65, 0x63, 0x60, 0x65, 0x64, 0x63, | ||
| 344 | 0x64, 0x66, 0x64, 0x61, 0x62, 0x64, 0x63, 0x63, | ||
| 345 | 0x63, 0x5F, 0x61, 0x67, 0x62, 0x61, 0x64, 0x63, | ||
| 346 | 0x63, 0x62, 0x65, 0x61, 0x68, 0x61, 0x63, 0x61, | ||
| 347 | 0x5D, 0x65, 0x68, 0x62, 0x60, 0x5E, 0x5E, 0x63, | ||
| 348 | 0x67, 0x69, 0x68, 0x69, 0x69, 0x64, 0x65, 0x64, | ||
| 349 | 0x65, 0x61, 0x64, 0x64, 0x64, 0x62, 0x62, 0x5C, | ||
| 350 | 0x60, 0x62, 0x63, 0x61, 0x61, 0x5B, 0x5C, 0x5C, | ||
| 351 | 0x60, 0x60, 0x61, 0x5F, 0x63, 0x5B, 0x5D, 0x60, | ||
| 352 | 0x61, 0x5F, 0x5B, 0x5C, 0x5A, 0x53, 0x52, 0x56, | ||
| 353 | 0x4E, 0x4C, 0x48, 0x44, 0x4E, 0x5A, 0x65, 0x6F, | ||
| 354 | 0x74, 0x7C, 0x81, 0x85, 0x85, 0x8E, 0x88, 0x87, | ||
| 355 | 0x88, 0x87, 0x88, 0x8E, 0x89, 0x8A, 0x8A, 0x8B, | ||
| 356 | 0x86, 0x83, 0x84, 0x87, 0x86, 0x83, 0x80, 0x7F, | ||
| 357 | 0x7F, 0x81, 0x80, 0x7F, 0x7F, 0x7E, 0x7E, 0x7F, | ||
| 358 | 0x80, 0x7D, 0x7C, 0x7C, 0x78, 0x84, 0xAD, 0xC3, | ||
| 359 | 0xCC, 0xD2, 0xD4, 0xD6, 0xD6, 0xCF, 0xB9, 0x87, | ||
| 360 | 0x54, 0x47, 0x51, 0x4D, 0x56, 0x53, 0x54, 0x59, | ||
| 361 | 0x57, 0x5B, 0x5E, 0x5B, 0x5E, 0x61, 0x5A, 0x5E, | ||
| 362 | 0x5A, 0x63, 0x5D, 0x5D, 0x5F, 0x5E, 0x62, 0x5F, | ||
| 363 | 0x62, 0x65, 0x63, 0x68, 0x6A, 0x63, 0x4D, 0x33, | ||
| 364 | 0x17, 0x12, 0x1B, 0x11, 0x16, 0x18, 0x14, 0x16, | ||
| 365 | 0x84, 0x83, 0x82, 0x7F, 0x83, 0x81, 0x82, 0x86, | ||
| 366 | 0x86, 0x85, 0x80, 0x83, 0x7E, 0x80, 0x85, 0x86, | ||
| 367 | 0x8C, 0x90, 0x8F, 0x8E, 0x93, 0x8C, 0x8C, 0x8B, | ||
| 368 | 0x88, 0x88, 0x84, 0x7C, 0x74, 0x68, 0x62, 0x5B, | ||
| 369 | 0x45, 0x3F, 0x38, 0x3A, 0x3F, 0x42, 0x41, 0x45, | ||
| 370 | 0x4D, 0x46, 0x49, 0x48, 0x44, 0x47, 0x45, 0x43, | ||
| 371 | 0x47, 0x46, 0x45, 0x45, 0x4B, 0x51, 0x50, 0x52, | ||
| 372 | 0x57, 0x54, 0x55, 0x57, 0x59, 0x5B, 0x57, 0x5E, | ||
| 373 | 0x5B, 0x5E, 0x5E, 0x60, 0x61, 0x60, 0x63, 0x61, | ||
| 374 | 0x5E, 0x63, 0x61, 0x63, 0x62, 0x63, 0x63, 0x62, | ||
| 375 | 0x61, 0x61, 0x63, 0x64, 0x60, 0x60, 0x64, 0x61, | ||
| 376 | 0x63, 0x61, 0x63, 0x61, 0x61, 0x61, 0x63, 0x62, | ||
| 377 | 0x64, 0x60, 0x61, 0x64, 0x60, 0x61, 0x61, 0x62, | ||
| 378 | 0x63, 0x60, 0x61, 0x62, 0x65, 0x5F, 0x66, 0x63, | ||
| 379 | 0x61, 0x63, 0x65, 0x62, 0x5E, 0x5E, 0x5F, 0x62, | ||
| 380 | 0x65, 0x66, 0x67, 0x67, 0x6D, 0x64, 0x62, 0x63, | ||
| 381 | 0x65, 0x61, 0x62, 0x62, 0x69, 0x61, 0x64, 0x5C, | ||
| 382 | 0x5F, 0x61, 0x61, 0x60, 0x61, 0x5C, 0x5B, 0x5E, | ||
| 383 | 0x60, 0x5F, 0x60, 0x60, 0x60, 0x5B, 0x5E, 0x5E, | ||
| 384 | 0x60, 0x5C, 0x5D, 0x5C, 0x60, 0x57, 0x53, 0x53, | ||
| 385 | 0x4E, 0x4D, 0x49, 0x44, 0x4C, 0x55, 0x61, 0x6C, | ||
| 386 | 0x74, 0x7B, 0x80, 0x84, 0x86, 0x8B, 0x89, 0x89, | ||
| 387 | 0x89, 0x87, 0x87, 0x8D, 0x89, 0x8C, 0x89, 0x8A, | ||
| 388 | 0x89, 0x83, 0x83, 0x83, 0x85, 0x86, 0x7F, 0x81, | ||
| 389 | 0x80, 0x82, 0x7E, 0x7F, 0x7D, 0x80, 0x7F, 0x81, | ||
| 390 | 0x7F, 0x7C, 0x7D, 0x7B, 0x7B, 0x76, 0x95, 0xBA, | ||
| 391 | 0xC7, 0xD0, 0xD2, 0xD5, 0xD7, 0xD4, 0xC8, 0xAA, | ||
| 392 | 0x70, 0x48, 0x4F, 0x4D, 0x54, 0x52, 0x55, 0x58, | ||
| 393 | 0x56, 0x59, 0x5A, 0x5C, 0x5F, 0x5E, 0x59, 0x5D, | ||
| 394 | 0x5A, 0x5D, 0x5D, 0x62, 0x63, 0x61, 0x61, 0x62, | ||
| 395 | 0x63, 0x66, 0x68, 0x6D, 0x65, 0x4A, 0x31, 0x1C, | ||
| 396 | 0x12, 0x1B, 0x22, 0x16, 0x1B, 0x16, 0x16, 0x18, | ||
| 397 | 0x84, 0x83, 0x7E, 0x82, 0x83, 0x81, 0x82, 0x85, | ||
| 398 | 0x87, 0x84, 0x83, 0x84, 0x7D, 0x80, 0x83, 0x88, | ||
| 399 | 0x8E, 0x90, 0x90, 0x8C, 0x8F, 0x8D, 0x8C, 0x88, | ||
| 400 | 0x85, 0x86, 0x83, 0x7C, 0x78, 0x6A, 0x63, 0x5A, | ||
| 401 | 0x43, 0x3A, 0x39, 0x3D, 0x3F, 0x3E, 0x42, 0x43, | ||
| 402 | 0x57, 0x45, 0x48, 0x44, 0x43, 0x4B, 0x43, 0x44, | ||
| 403 | 0x48, 0x46, 0x46, 0x46, 0x4C, 0x52, 0x4D, 0x52, | ||
| 404 | 0x56, 0x59, 0x55, 0x58, 0x57, 0x5A, 0x5B, 0x5B, | ||
| 405 | 0x5D, 0x5C, 0x5D, 0x60, 0x63, 0x62, 0x60, 0x61, | ||
| 406 | 0x60, 0x5F, 0x62, 0x63, 0x5F, 0x60, 0x62, 0x62, | ||
| 407 | 0x61, 0x61, 0x63, 0x64, 0x61, 0x60, 0x64, 0x63, | ||
| 408 | 0x62, 0x60, 0x64, 0x63, 0x60, 0x5F, 0x63, 0x62, | ||
| 409 | 0x61, 0x64, 0x5E, 0x61, 0x60, 0x60, 0x5E, 0x62, | ||
| 410 | 0x60, 0x5F, 0x60, 0x60, 0x61, 0x5F, 0x61, 0x61, | ||
| 411 | 0x61, 0x61, 0x61, 0x61, 0x5D, 0x60, 0x5E, 0x5F, | ||
| 412 | 0x63, 0x62, 0x66, 0x66, 0x69, 0x64, 0x61, 0x62, | ||
| 413 | 0x64, 0x62, 0x63, 0x61, 0x65, 0x61, 0x60, 0x5F, | ||
| 414 | 0x5E, 0x63, 0x5E, 0x5D, 0x5D, 0x5D, 0x5B, 0x60, | ||
| 415 | 0x5F, 0x5F, 0x5D, 0x5F, 0x5B, 0x5B, 0x5F, 0x5E, | ||
| 416 | 0x5D, 0x5A, 0x5C, 0x5B, 0x5C, 0x58, 0x52, 0x51, | ||
| 417 | 0x4E, 0x51, 0x4A, 0x47, 0x4D, 0x51, 0x5E, 0x69, | ||
| 418 | 0x74, 0x7B, 0x7E, 0x82, 0x86, 0x89, 0x8B, 0x89, | ||
| 419 | 0x88, 0x8A, 0x86, 0x88, 0x88, 0x8C, 0x88, 0x89, | ||
| 420 | 0x89, 0x88, 0x85, 0x7F, 0x83, 0x84, 0x80, 0x80, | ||
| 421 | 0x80, 0x81, 0x7C, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, | ||
| 422 | 0x7E, 0x7B, 0x7D, 0x7C, 0x78, 0x74, 0x7F, 0xA8, | ||
| 423 | 0xC1, 0xCB, 0xD1, 0xD4, 0xD6, 0xD6, 0xD2, 0xC1, | ||
| 424 | 0x94, 0x57, 0x49, 0x4C, 0x52, 0x53, 0x57, 0x5A, | ||
| 425 | 0x57, 0x59, 0x53, 0x5A, 0x5E, 0x5C, 0x5A, 0x5A, | ||
| 426 | 0x5A, 0x57, 0x60, 0x63, 0x65, 0x64, 0x63, 0x64, | ||
| 427 | 0x66, 0x69, 0x6A, 0x67, 0x4E, 0x30, 0x1C, 0x12, | ||
| 428 | 0x15, 0x19, 0x1F, 0x1A, 0x1A, 0x16, 0x1A, 0x1B, | ||
| 429 | 0x81, 0x81, 0x7D, 0x83, 0x85, 0x81, 0x84, 0x84, | ||
| 430 | 0x86, 0x83, 0x84, 0x83, 0x7E, 0x84, 0x86, 0x8B, | ||
| 431 | 0x8F, 0x8F, 0x94, 0x8D, 0x8D, 0x8B, 0x8C, 0x85, | ||
| 432 | 0x85, 0x85, 0x84, 0x7D, 0x79, 0x6B, 0x5C, 0x4F, | ||
| 433 | 0x3F, 0x36, 0x36, 0x3A, 0x3E, 0x3B, 0x43, 0x44, | ||
| 434 | 0x4E, 0x45, 0x47, 0x42, 0x45, 0x4B, 0x44, 0x44, | ||
| 435 | 0x48, 0x44, 0x46, 0x4A, 0x4B, 0x4F, 0x4D, 0x50, | ||
| 436 | 0x56, 0x5A, 0x57, 0x59, 0x56, 0x58, 0x5E, 0x5C, | ||
| 437 | 0x5F, 0x5F, 0x5C, 0x5F, 0x5D, 0x65, 0x5D, 0x62, | ||
| 438 | 0x5F, 0x5C, 0x61, 0x60, 0x5F, 0x5E, 0x61, 0x62, | ||
| 439 | 0x61, 0x61, 0x63, 0x60, 0x5F, 0x61, 0x63, 0x63, | ||
| 440 | 0x61, 0x61, 0x64, 0x62, 0x60, 0x61, 0x66, 0x63, | ||
| 441 | 0x62, 0x64, 0x5E, 0x61, 0x60, 0x5F, 0x5C, 0x5F, | ||
| 442 | 0x5C, 0x60, 0x5E, 0x5D, 0x5E, 0x5E, 0x5B, 0x5F, | ||
| 443 | 0x60, 0x5D, 0x5E, 0x60, 0x5E, 0x60, 0x5B, 0x5E, | ||
| 444 | 0x61, 0x60, 0x63, 0x64, 0x64, 0x65, 0x63, 0x61, | ||
| 445 | 0x63, 0x61, 0x64, 0x64, 0x60, 0x62, 0x5C, 0x5F, | ||
| 446 | 0x5D, 0x63, 0x5E, 0x5C, 0x5D, 0x5D, 0x5B, 0x5F, | ||
| 447 | 0x5E, 0x60, 0x5D, 0x5D, 0x5B, 0x5D, 0x5E, 0x5E, | ||
| 448 | 0x5C, 0x5B, 0x5D, 0x59, 0x5A, 0x58, 0x52, 0x4D, | ||
| 449 | 0x4F, 0x4F, 0x4A, 0x4B, 0x50, 0x54, 0x5C, 0x66, | ||
| 450 | 0x71, 0x79, 0x7C, 0x83, 0x85, 0x89, 0x8B, 0x8A, | ||
| 451 | 0x87, 0x8D, 0x86, 0x84, 0x87, 0x89, 0x88, 0x88, | ||
| 452 | 0x87, 0x89, 0x86, 0x81, 0x83, 0x84, 0x82, 0x80, | ||
| 453 | 0x82, 0x80, 0x7C, 0x7D, 0x7F, 0x7D, 0x7D, 0x7C, | ||
| 454 | 0x7F, 0x7C, 0x7C, 0x7D, 0x78, 0x75, 0x75, 0x91, | ||
| 455 | 0xB7, 0xC7, 0xCF, 0xD4, 0xD5, 0xD6, 0xD7, 0xCE, | ||
| 456 | 0xB2, 0x7C, 0x4A, 0x4A, 0x4F, 0x53, 0x58, 0x5B, | ||
| 457 | 0x5B, 0x5C, 0x57, 0x59, 0x5E, 0x5C, 0x5A, 0x58, | ||
| 458 | 0x59, 0x5B, 0x5E, 0x60, 0x61, 0x62, 0x63, 0x64, | ||
| 459 | 0x69, 0x6B, 0x63, 0x50, 0x2B, 0x27, 0x19, 0x11, | ||
| 460 | 0x13, 0x15, 0x15, 0x17, 0x14, 0x18, 0x1E, 0x1A, | ||
| 461 | 0x7F, 0x7F, 0x81, 0x82, 0x84, 0x82, 0x85, 0x83, | ||
| 462 | 0x83, 0x83, 0x85, 0x82, 0x81, 0x89, 0x8A, 0x8D, | ||
| 463 | 0x8F, 0x90, 0x92, 0x8E, 0x8A, 0x87, 0x89, 0x85, | ||
| 464 | 0x87, 0x87, 0x85, 0x7D, 0x78, 0x6C, 0x58, 0x4B, | ||
| 465 | 0x3B, 0x33, 0x30, 0x36, 0x3E, 0x3D, 0x43, 0x46, | ||
| 466 | 0x43, 0x46, 0x46, 0x45, 0x48, 0x47, 0x46, 0x44, | ||
| 467 | 0x49, 0x42, 0x46, 0x4A, 0x4B, 0x4B, 0x4F, 0x4F, | ||
| 468 | 0x56, 0x5B, 0x57, 0x58, 0x57, 0x5A, 0x5B, 0x5E, | ||
| 469 | 0x5F, 0x61, 0x5C, 0x5E, 0x5D, 0x61, 0x5E, 0x62, | ||
| 470 | 0x5D, 0x5E, 0x5F, 0x5E, 0x61, 0x61, 0x60, 0x62, | ||
| 471 | 0x61, 0x61, 0x60, 0x5F, 0x5D, 0x60, 0x5F, 0x61, | ||
| 472 | 0x61, 0x60, 0x62, 0x5E, 0x60, 0x64, 0x65, 0x63, | ||
| 473 | 0x66, 0x65, 0x65, 0x60, 0x5F, 0x5C, 0x59, 0x5B, | ||
| 474 | 0x5B, 0x5D, 0x59, 0x5C, 0x5B, 0x5D, 0x5E, 0x5F, | ||
| 475 | 0x5F, 0x5A, 0x5C, 0x5E, 0x5E, 0x5F, 0x5A, 0x60, | ||
| 476 | 0x5D, 0x5F, 0x5F, 0x63, 0x62, 0x64, 0x63, 0x61, | ||
| 477 | 0x61, 0x63, 0x64, 0x66, 0x60, 0x61, 0x5E, 0x5D, | ||
| 478 | 0x5D, 0x5F, 0x5E, 0x5D, 0x60, 0x5C, 0x5D, 0x5F, | ||
| 479 | 0x5D, 0x5E, 0x5E, 0x5D, 0x5C, 0x60, 0x5E, 0x5D, | ||
| 480 | 0x5D, 0x5B, 0x5C, 0x59, 0x5C, 0x5B, 0x53, 0x4E, | ||
| 481 | 0x50, 0x4A, 0x48, 0x4B, 0x50, 0x56, 0x5C, 0x63, | ||
| 482 | 0x6E, 0x74, 0x7E, 0x83, 0x84, 0x88, 0x8B, 0x89, | ||
| 483 | 0x89, 0x8B, 0x85, 0x85, 0x87, 0x86, 0x88, 0x85, | ||
| 484 | 0x86, 0x87, 0x86, 0x85, 0x82, 0x84, 0x82, 0x81, | ||
| 485 | 0x83, 0x80, 0x7F, 0x7E, 0x7D, 0x7F, 0x7F, 0x7C, | ||
| 486 | 0x7F, 0x7C, 0x7E, 0x7D, 0x7A, 0x78, 0x75, 0x7C, | ||
| 487 | 0xA4, 0xC2, 0xCC, 0xD3, 0xD4, 0xD7, 0xD9, 0xD5, | ||
| 488 | 0xC7, 0xA2, 0x60, 0x46, 0x4E, 0x50, 0x54, 0x57, | ||
| 489 | 0x5C, 0x5E, 0x5D, 0x5A, 0x5D, 0x5A, 0x5A, 0x59, | ||
| 490 | 0x59, 0x5E, 0x5E, 0x5D, 0x5E, 0x61, 0x63, 0x67, | ||
| 491 | 0x69, 0x64, 0x4C, 0x2D, 0x12, 0x1C, 0x1B, 0x10, | ||
| 492 | 0x0E, 0x14, 0x11, 0x13, 0x12, 0x1B, 0x1D, 0x1A, | ||
| 493 | 0x82, 0x81, 0x85, 0x82, 0x83, 0x82, 0x85, 0x85, | ||
| 494 | 0x84, 0x84, 0x87, 0x85, 0x84, 0x8C, 0x8C, 0x90, | ||
| 495 | 0x91, 0x91, 0x8E, 0x8E, 0x87, 0x84, 0x85, 0x85, | ||
| 496 | 0x86, 0x89, 0x86, 0x7F, 0x76, 0x69, 0x59, 0x4D, | ||
| 497 | 0x3A, 0x35, 0x31, 0x36, 0x3F, 0x40, 0x42, 0x45, | ||
| 498 | 0x45, 0x46, 0x49, 0x44, 0x49, 0x47, 0x48, 0x44, | ||
| 499 | 0x47, 0x43, 0x46, 0x49, 0x4B, 0x4B, 0x50, 0x52, | ||
| 500 | 0x54, 0x5A, 0x58, 0x58, 0x59, 0x5E, 0x5B, 0x5C, | ||
| 501 | 0x5F, 0x5E, 0x5B, 0x5D, 0x62, 0x5F, 0x5F, 0x5F, | ||
| 502 | 0x5D, 0x5E, 0x60, 0x5F, 0x63, 0x63, 0x5E, 0x62, | ||
| 503 | 0x61, 0x60, 0x5E, 0x61, 0x60, 0x60, 0x5E, 0x62, | ||
| 504 | 0x62, 0x5F, 0x5F, 0x5C, 0x60, 0x61, 0x60, 0x65, | ||
| 505 | 0x67, 0x68, 0x68, 0x61, 0x5F, 0x5A, 0x58, 0x5A, | ||
| 506 | 0x5A, 0x58, 0x57, 0x59, 0x5A, 0x5D, 0x5F, 0x60, | ||
| 507 | 0x5D, 0x5C, 0x5C, 0x5C, 0x5B, 0x5D, 0x5C, 0x5F, | ||
| 508 | 0x5E, 0x5F, 0x60, 0x60, 0x61, 0x62, 0x63, 0x65, | ||
| 509 | 0x62, 0x64, 0x64, 0x64, 0x61, 0x60, 0x60, 0x5C, | ||
| 510 | 0x5E, 0x5F, 0x5E, 0x60, 0x5E, 0x5D, 0x5C, 0x5E, | ||
| 511 | 0x5D, 0x5B, 0x5D, 0x5D, 0x5B, 0x61, 0x5F, 0x5C, | ||
| 512 | 0x5F, 0x5C, 0x5B, 0x5B, 0x57, 0x59, 0x56, 0x52, | ||
| 513 | 0x50, 0x4C, 0x49, 0x4B, 0x4E, 0x55, 0x5E, 0x65, | ||
| 514 | 0x6D, 0x73, 0x7F, 0x81, 0x85, 0x85, 0x8A, 0x89, | ||
| 515 | 0x8A, 0x88, 0x86, 0x86, 0x88, 0x84, 0x89, 0x83, | ||
| 516 | 0x88, 0x84, 0x84, 0x84, 0x82, 0x82, 0x82, 0x81, | ||
| 517 | 0x83, 0x80, 0x80, 0x7F, 0x7F, 0x85, 0x80, 0x7E, | ||
| 518 | 0x7D, 0x7D, 0x7E, 0x7D, 0x79, 0x79, 0x77, 0x73, | ||
| 519 | 0x8B, 0xB6, 0xC7, 0xD0, 0xD3, 0xD5, 0xD8, 0xD8, | ||
| 520 | 0xD2, 0xBC, 0x86, 0x4A, 0x48, 0x50, 0x52, 0x56, | ||
| 521 | 0x58, 0x5A, 0x58, 0x5C, 0x5C, 0x59, 0x5B, 0x5B, | ||
| 522 | 0x5A, 0x5E, 0x5E, 0x5E, 0x5F, 0x64, 0x66, 0x69, | ||
| 523 | 0x62, 0x49, 0x27, 0x13, 0x0D, 0x14, 0x18, 0x10, | ||
| 524 | 0x12, 0x12, 0x12, 0x14, 0x14, 0x1C, 0x19, 0x21, | ||
| 525 | 0x82, 0x83, 0x86, 0x83, 0x83, 0x84, 0x84, 0x86, | ||
| 526 | 0x86, 0x85, 0x85, 0x89, 0x8A, 0x8F, 0x8F, 0x91, | ||
| 527 | 0x92, 0x8F, 0x8E, 0x8D, 0x86, 0x85, 0x84, 0x84, | ||
| 528 | 0x85, 0x8A, 0x88, 0x83, 0x76, 0x69, 0x5E, 0x4E, | ||
| 529 | 0x3D, 0x39, 0x34, 0x38, 0x3F, 0x40, 0x42, 0x45, | ||
| 530 | 0x48, 0x47, 0x4C, 0x45, 0x4B, 0x49, 0x46, 0x44, | ||
| 531 | 0x46, 0x43, 0x45, 0x48, 0x4A, 0x4A, 0x4F, 0x51, | ||
| 532 | 0x53, 0x55, 0x59, 0x59, 0x5A, 0x5D, 0x5B, 0x59, | ||
| 533 | 0x5F, 0x5C, 0x5D, 0x5C, 0x61, 0x61, 0x5F, 0x5D, | ||
| 534 | 0x5D, 0x5B, 0x5F, 0x60, 0x61, 0x62, 0x5E, 0x60, | ||
| 535 | 0x60, 0x60, 0x5F, 0x61, 0x61, 0x61, 0x60, 0x61, | ||
| 536 | 0x61, 0x5F, 0x60, 0x5E, 0x61, 0x5C, 0x60, 0x65, | ||
| 537 | 0x65, 0x64, 0x65, 0x62, 0x60, 0x5F, 0x5B, 0x58, | ||
| 538 | 0x59, 0x55, 0x59, 0x57, 0x5B, 0x5A, 0x5C, 0x5F, | ||
| 539 | 0x5E, 0x5C, 0x5C, 0x5D, 0x5D, 0x5A, 0x5C, 0x5D, | ||
| 540 | 0x5E, 0x5F, 0x64, 0x5E, 0x60, 0x62, 0x61, 0x65, | ||
| 541 | 0x67, 0x62, 0x64, 0x60, 0x60, 0x5D, 0x5F, 0x5E, | ||
| 542 | 0x60, 0x61, 0x60, 0x60, 0x61, 0x5E, 0x58, 0x5E, | ||
| 543 | 0x5C, 0x5A, 0x5D, 0x5B, 0x5B, 0x60, 0x5E, 0x5F, | ||
| 544 | 0x5F, 0x61, 0x5A, 0x59, 0x55, 0x55, 0x57, 0x54, | ||
| 545 | 0x4F, 0x4D, 0x4B, 0x4A, 0x4A, 0x55, 0x5F, 0x66, | ||
| 546 | 0x6A, 0x74, 0x7B, 0x7D, 0x84, 0x84, 0x86, 0x89, | ||
| 547 | 0x88, 0x87, 0x86, 0x84, 0x88, 0x82, 0x88, 0x84, | ||
| 548 | 0x88, 0x84, 0x83, 0x83, 0x83, 0x82, 0x81, 0x81, | ||
| 549 | 0x84, 0x81, 0x7F, 0x7F, 0x82, 0x88, 0x81, 0x83, | ||
| 550 | 0x7D, 0x7F, 0x7D, 0x7D, 0x7A, 0x7A, 0x77, 0x72, | ||
| 551 | 0x79, 0x9D, 0xBB, 0xCA, 0xD0, 0xD4, 0xD7, 0xD8, | ||
| 552 | 0xD8, 0xCD, 0xAE, 0x6D, 0x49, 0x50, 0x50, 0x57, | ||
| 553 | 0x55, 0x58, 0x54, 0x5B, 0x59, 0x5B, 0x5C, 0x5C, | ||
| 554 | 0x5E, 0x5D, 0x5C, 0x61, 0x62, 0x66, 0x67, 0x65, | ||
| 555 | 0x51, 0x27, 0x10, 0x0D, 0x15, 0x14, 0x15, 0x10, | ||
| 556 | 0x16, 0x13, 0x15, 0x17, 0x17, 0x18, 0x19, 0x23 | ||
| 557 | }; | ||
| 558 | |||
| 559 | |||
| 560 | |||
| 561 | /* | ||
| 562 | Macro definitions | ||
| 563 | */ | ||
| 564 | |||
| 565 | #define abs(x) (x>=0 ? x : -(x)) | ||
| 566 | #define FILTER 0 | ||
| 567 | #define EXPAND 1 | ||
| 568 | #define IS == | ||
| 569 | #define ISNT != | ||
| 570 | #define AND && | ||
| 571 | #define OR || | ||
| 572 | |||
| 573 | #define NUM_LEVELS 4 | ||
| 574 | |||
| 575 | |||
| 576 | /* | ||
| 577 | Forward declaration of functions | ||
| 578 | */ | ||
| 579 | |||
| 580 | void epic_init( void ); | ||
| 581 | void epic_build_pyr( float *image, int x_size, int y_size, int num_levels, | ||
| 582 | float *lo_filter, float *hi_filter, int filter_size ); | ||
| 583 | void epic_build_level( float *image, int level_x_size, int level_y_size, | ||
| 584 | float *lo_filter, float *hi_filter, | ||
| 585 | int filter_size, float *result_block ); | ||
| 586 | void epic_internal_transpose( float *mat, int rows, int cols ); | ||
| 587 | void epic_internal_filter( float *image, int x_dim, int y_dim, float *filt, | ||
| 588 | float *temp, int x_fdim, int y_fdim, | ||
| 589 | int xgrid_start, int xgrid_step, int ygrid_start, | ||
| 590 | int ygrid_step, float *result ); | ||
| 591 | void epic_reflect1( float *filt, int x_dim, int y_dim, int x_pos, int y_pos, | ||
| 592 | float *result, int f_or_e ); | ||
| 593 | void epic_main( void ); | ||
| 594 | //int main( void ); | ||
| 595 | |||
| 596 | |||
| 597 | /* | ||
| 598 | Declaration of global variables | ||
| 599 | */ | ||
| 600 | |||
| 601 | float epic_filtertemp[FILTER_SIZE]; | ||
| 602 | float epic_hi_imagetemp[X_SIZE * Y_SIZE / 2]; | ||
| 603 | float epic_lo_imagetemp[X_SIZE * Y_SIZE / 2]; | ||
| 604 | |||
| 605 | static float epic_lo_filter[FILTER_SIZE] = { | ||
| 606 | -0.0012475221, -0.0024950907, 0.0087309530, 0.0199579580, | ||
| 607 | -0.0505290000, -0.1205509700, 0.2930455800, | ||
| 608 | 0.7061761600, | ||
| 609 | 0.2930455800, -0.1205509700, -0.0505290000, | ||
| 610 | 0.0199579580, 0.0087309530, -0.0024950907, -0.0012475221 | ||
| 611 | }; | ||
| 612 | |||
| 613 | static float epic_hi_filter[FILTER_SIZE] = { | ||
| 614 | 0.0012475221, -0.0024950907, -0.0087309530, 0.0199579580, | ||
| 615 | 0.0505290000, -0.1205509700, -0.2930455800, | ||
| 616 | 0.7061761600, | ||
| 617 | -0.2930455800, -0.1205509700, 0.0505290000, | ||
| 618 | 0.0199579580, -0.0087309530, -0.0024950907, 0.0012475221 | ||
| 619 | }; | ||
| 620 | |||
| 621 | |||
| 622 | /* | ||
| 623 | Initialization function | ||
| 624 | */ | ||
| 625 | |||
| 626 | void epic_init( void ) | ||
| 627 | { | ||
| 628 | int i; | ||
| 629 | |||
| 630 | _Pragma( "loopbound min 4096 max 9801" ) | ||
| 631 | for ( i = 0; i < X_SIZE * Y_SIZE; ++i ) | ||
| 632 | epic_image[i] *= SCALE_FACTOR; | ||
| 633 | } | ||
| 634 | |||
| 635 | |||
| 636 | /* | ||
| 637 | Algorithm core functions | ||
| 638 | */ | ||
| 639 | |||
| 640 | /* | ||
| 641 | ====================================================================== | ||
| 642 | epic_build_pyr() -- builds a separable QMF-style pyramid. The pyramid | ||
| 643 | is written over the original image. NOTE: the image size must be | ||
| 644 | divisible by 2^num_levels, but we do not check this here. | ||
| 645 | ====================================================================== | ||
| 646 | */ | ||
| 647 | void epic_build_pyr( float *image, int x_size, int y_size, int num_levels, | ||
| 648 | float *lo_filter, float *hi_filter, int filter_size ) | ||
| 649 | { | ||
| 650 | int x_level, y_level, level; | ||
| 651 | |||
| 652 | x_level = x_size; | ||
| 653 | y_level = y_size; | ||
| 654 | |||
| 655 | _Pragma( "loopbound min 4 max 4" ) | ||
| 656 | for ( level = 0; level < num_levels; ++level ){ | ||
| 657 | epic_build_level( image, x_level, y_level, lo_filter, hi_filter, | ||
| 658 | filter_size, image ); | ||
| 659 | x_level /= 2; | ||
| 660 | y_level /= 2; | ||
| 661 | } | ||
| 662 | } | ||
| 663 | |||
| 664 | |||
| 665 | /* | ||
| 666 | ====================================================================== | ||
| 667 | epic_build_level() -- builds a level of the pyramid by computing 4 | ||
| 668 | filtered and subsampled images. Since the convolution is separable, | ||
| 669 | image and result-block can point to the same place! Image order is | ||
| 670 | lowpass, horizontal, vertical (transposed), and diagonal. | ||
| 671 | ====================================================================== | ||
| 672 | */ | ||
| 673 | void epic_build_level( float *image, int level_x_size, int level_y_size, | ||
| 674 | float *lo_filter, float *hi_filter, | ||
| 675 | int filter_size, float *result_block ) | ||
| 676 | { | ||
| 677 | int total_size = level_x_size * level_y_size; | ||
| 678 | |||
| 679 | /* filter and subsample in the X direction */ | ||
| 680 | epic_internal_filter ( image, level_x_size, level_y_size, | ||
| 681 | lo_filter, epic_filtertemp, filter_size, 1, | ||
| 682 | 0, 2, 0, 1, epic_lo_imagetemp ); | ||
| 683 | epic_internal_filter ( image, level_x_size, level_y_size, | ||
| 684 | hi_filter, epic_filtertemp, filter_size, 1, | ||
| 685 | 1, 2, 0, 1, epic_hi_imagetemp ); | ||
| 686 | |||
| 687 | level_x_size /= 2; | ||
| 688 | /* now filter and subsample in the Y direction */ | ||
| 689 | epic_internal_filter ( epic_lo_imagetemp, level_x_size, | ||
| 690 | level_y_size, /* lowpass */ | ||
| 691 | lo_filter, epic_filtertemp, 1, filter_size, | ||
| 692 | 0, 1, 0, 2, result_block ); | ||
| 693 | epic_internal_filter ( epic_lo_imagetemp, level_x_size, | ||
| 694 | level_y_size, /* horizontal */ | ||
| 695 | hi_filter, epic_filtertemp, 1, filter_size, | ||
| 696 | 0, 1, 1, 2, ( result_block += ( total_size / 4 ) ) ); | ||
| 697 | epic_internal_filter ( epic_hi_imagetemp, level_x_size, | ||
| 698 | level_y_size, /* vertical */ | ||
| 699 | lo_filter, epic_filtertemp, 1, filter_size, | ||
| 700 | 0, 1, 0, 2, ( result_block += ( total_size / 4 ) ) ); | ||
| 701 | /* transpose the vertical band for more efficient scanning */ | ||
| 702 | epic_internal_transpose( result_block, level_y_size / 2, level_x_size ); | ||
| 703 | epic_internal_filter ( epic_hi_imagetemp, level_x_size, | ||
| 704 | level_y_size, /* diagonal */ | ||
| 705 | hi_filter, epic_filtertemp, 1, filter_size, | ||
| 706 | 0, 1, 1, 2, ( result_block += ( total_size / 4 ) ) ); | ||
| 707 | } | ||
| 708 | |||
| 709 | |||
| 710 | /* | ||
| 711 | ====================================================================== | ||
| 712 | In-place matrix tranpose algorithm. Handles non-square matrices, | ||
| 713 | too! Is there a faster algorithm?? | ||
| 714 | ====================================================================== | ||
| 715 | */ | ||
| 716 | void epic_internal_transpose( float *mat, int rows, int cols ) | ||
| 717 | { | ||
| 718 | register int swap_pos; | ||
| 719 | register int modulus = rows * cols - 1; | ||
| 720 | register int current_pos; | ||
| 721 | register float swap_val; | ||
| 722 | |||
| 723 | /* loop, ignoring first and last elements */ | ||
| 724 | _Pragma( "loopbound min 1022 max 2399" ) | ||
| 725 | for ( current_pos = 1; current_pos < modulus; ++current_pos ) { | ||
| 726 | /* Compute swap position */ | ||
| 727 | swap_pos = current_pos; | ||
| 728 | |||
| 729 | _Pragma( "loopbound min 1 max 2" ) | ||
| 730 | do { | ||
| 731 | swap_pos = ( swap_pos * cols ) % modulus; | ||
| 732 | } while ( swap_pos < current_pos ); | ||
| 733 | |||
| 734 | if ( current_pos != swap_pos ) { | ||
| 735 | swap_val = mat[swap_pos]; | ||
| 736 | mat[swap_pos] = mat[current_pos]; | ||
| 737 | mat[current_pos] = swap_val; | ||
| 738 | } | ||
| 739 | } | ||
| 740 | } | ||
| 741 | |||
| 742 | |||
| 743 | /* -------------------------------------------------------------------- | ||
| 744 | Correlate FILT with IMAGE, subsampling according to GRID parameters, | ||
| 745 | with values placed into result array. TEMP is a temporary | ||
| 746 | array the size of the filter. EDGES is a string -- see convolve.h. | ||
| 747 | The convolution is done in 9 sections, where the border sections use | ||
| 748 | specially computed edge-handling filters (see edges.c). The origin | ||
| 749 | of the filter is assumed to be (floor(x_fdim/2), floor(y_fdim/2)). | ||
| 750 | 10/6/89 - approximately optimized the choice of register vars on SPARCS. | ||
| 751 | ------------------------------------------------------------------------ */ | ||
| 752 | void epic_internal_filter( float *image, int x_dim, int y_dim, float *filt, | ||
| 753 | float *temp, int x_fdim, int y_fdim, | ||
| 754 | int xgrid_start, int xgrid_step, int ygrid_start, | ||
| 755 | int ygrid_step, float *result ) | ||
| 756 | { | ||
| 757 | //register double sum; | ||
| 758 | register float sum; | ||
| 759 | register int x_filt, im_pos, y_filt_lin; | ||
| 760 | register int y_im_lin, x_pos, filt_size = x_fdim * y_fdim; | ||
| 761 | register int y_pos, res_pos; | ||
| 762 | register int last_ctr_col = x_dim - x_fdim; | ||
| 763 | int last_ctr_row = ( y_dim - y_fdim ) * x_dim; | ||
| 764 | int first_row, first_col ; | ||
| 765 | int x_fmid = x_fdim / 2; | ||
| 766 | int y_fmid = y_fdim / 2; | ||
| 767 | int x_stop = x_fdim - x_fmid + 1; | ||
| 768 | int y_stop = y_fdim - y_fmid + 1; | ||
| 769 | int ygrid_step_full = ygrid_step * x_dim; | ||
| 770 | int prev_res_pos, x_res_dim = ( x_dim - xgrid_start + xgrid_step - 1 ) / | ||
| 771 | xgrid_step; | ||
| 772 | int rt_edge_res_pos = x_res_dim; | ||
| 773 | |||
| 774 | res_pos = 0; | ||
| 775 | first_col = xgrid_start - x_fmid + xgrid_step; | ||
| 776 | |||
| 777 | _Pragma( "loopbound min 1 max 4" ) | ||
| 778 | for ( y_pos = ygrid_start - y_fmid - 1; y_pos < 0; y_pos += ygrid_step ) { | ||
| 779 | _Pragma( "loopbound min 1 max 4" ) | ||
| 780 | for ( x_pos = xgrid_start - x_fmid; /* top-left corner */ | ||
| 781 | x_pos < 0; | ||
| 782 | x_pos += xgrid_step ) { | ||
| 783 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, y_pos, temp, FILTER ); | ||
| 784 | sum = 0.0f; | ||
| 785 | x_filt = y_im_lin = 0; | ||
| 786 | _Pragma( "loopbound min 1 max 15" ) | ||
| 787 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 788 | y_filt_lin += x_fdim ) { | ||
| 789 | im_pos = y_im_lin; | ||
| 790 | |||
| 791 | _Pragma( "loopbound min 1 max 15" ) | ||
| 792 | for ( ; x_filt < y_filt_lin; ++x_filt ) { | ||
| 793 | sum += image[im_pos] * temp[x_filt]; | ||
| 794 | ++im_pos; | ||
| 795 | } | ||
| 796 | y_im_lin += x_dim; | ||
| 797 | } | ||
| 798 | result[res_pos] = sum; | ||
| 799 | ++res_pos; | ||
| 800 | } | ||
| 801 | first_col = x_pos + 1; | ||
| 802 | epic_reflect1( filt, x_fdim, y_fdim, 0, y_pos, temp, FILTER ); | ||
| 803 | _Pragma( "loopbound min 41 max 46" ) | ||
| 804 | for ( x_pos = first_col; /* top edge */ | ||
| 805 | x_pos < last_ctr_col; | ||
| 806 | x_pos += xgrid_step ) { | ||
| 807 | sum = 0.0f; | ||
| 808 | x_filt = y_im_lin = 0; | ||
| 809 | _Pragma( "loopbound min 1 max 15" ) | ||
| 810 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 811 | y_filt_lin += x_fdim ) { | ||
| 812 | im_pos = x_pos + y_im_lin; | ||
| 813 | _Pragma( "loopbound min 1 max 15" ) | ||
| 814 | for ( ; x_filt < y_filt_lin; ++x_filt ) { | ||
| 815 | sum += image[im_pos] * temp[x_filt]; | ||
| 816 | ++im_pos; | ||
| 817 | } | ||
| 818 | y_im_lin += x_dim; | ||
| 819 | } | ||
| 820 | result[res_pos] = sum; | ||
| 821 | ++res_pos; | ||
| 822 | } | ||
| 823 | rt_edge_res_pos = res_pos + x_res_dim; /* save this for later ... */ | ||
| 824 | _Pragma( "loopbound min 1 max 4" ) | ||
| 825 | for ( x_pos += ( 1 - last_ctr_col ); /* top-right corner */ | ||
| 826 | x_pos < x_stop; | ||
| 827 | x_pos += xgrid_step ) { | ||
| 828 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, y_pos, temp, FILTER ); | ||
| 829 | sum = 0.0f; | ||
| 830 | x_filt = y_im_lin = 0; | ||
| 831 | _Pragma( "loopbound min 1 max 15" ) | ||
| 832 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 833 | y_filt_lin += x_fdim ) { | ||
| 834 | im_pos = y_im_lin + last_ctr_col; | ||
| 835 | |||
| 836 | _Pragma( "loopbound min 1 max 15" ) | ||
| 837 | for ( ; x_filt < y_filt_lin; ++x_filt ) { | ||
| 838 | sum += image[im_pos] * temp[x_filt]; | ||
| 839 | ++im_pos; | ||
| 840 | } | ||
| 841 | y_im_lin += x_dim; | ||
| 842 | } | ||
| 843 | result[res_pos] = sum; | ||
| 844 | ++res_pos; | ||
| 845 | } | ||
| 846 | } /* end top */ | ||
| 847 | |||
| 848 | first_row = x_dim * ( y_pos + 1 ); /* need this to go down the sides */ | ||
| 849 | prev_res_pos = res_pos; | ||
| 850 | _Pragma( "loopbound min 1 max 4" ) | ||
| 851 | for ( x_pos = xgrid_start - x_fmid; /* left edge */ | ||
| 852 | x_pos < 1; | ||
| 853 | x_pos += xgrid_step ) { | ||
| 854 | res_pos = prev_res_pos; | ||
| 855 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, 0, temp, FILTER ); | ||
| 856 | _Pragma( "loopbound min 41 max 97" ) | ||
| 857 | for ( y_pos = first_row; y_pos < last_ctr_row; | ||
| 858 | y_pos += ygrid_step_full ) { | ||
| 859 | sum = 0.0f; | ||
| 860 | x_filt = 0, y_im_lin = y_pos; | ||
| 861 | _Pragma( "loopbound min 1 max 15" ) | ||
| 862 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 863 | y_filt_lin += x_fdim ) { | ||
| 864 | im_pos = y_im_lin; | ||
| 865 | _Pragma( "loopbound min 1 max 15" ) | ||
| 866 | for ( ; x_filt < y_filt_lin; x_filt++ ) { | ||
| 867 | sum += image[im_pos] * temp[x_filt]; | ||
| 868 | ++im_pos; | ||
| 869 | } | ||
| 870 | y_im_lin += x_dim; | ||
| 871 | } | ||
| 872 | result[res_pos] = sum; | ||
| 873 | res_pos += x_res_dim; | ||
| 874 | } | ||
| 875 | prev_res_pos++; | ||
| 876 | } | ||
| 877 | epic_reflect1( filt, x_fdim, y_fdim, 0, 0, temp, FILTER ); | ||
| 878 | _Pragma( "loopbound min 41 max 97" ) | ||
| 879 | for ( y_pos = first_row; /* center region of image */ | ||
| 880 | y_pos < last_ctr_row; | ||
| 881 | y_pos += ygrid_step_full ) { | ||
| 882 | res_pos = prev_res_pos; | ||
| 883 | _Pragma( "loopbound min 41 max 46" ) | ||
| 884 | for ( x_pos = first_col; | ||
| 885 | x_pos < last_ctr_col; | ||
| 886 | x_pos += xgrid_step ) { | ||
| 887 | sum = 0.0f; | ||
| 888 | x_filt = 0, y_im_lin = y_pos; | ||
| 889 | _Pragma( "loopbound min 1 max 15" ) | ||
| 890 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 891 | y_filt_lin += x_fdim ) { | ||
| 892 | im_pos = x_pos + y_im_lin; | ||
| 893 | _Pragma( "loopbound min 1 max 15" ) | ||
| 894 | for ( ; x_filt < y_filt_lin; ++x_filt ) { | ||
| 895 | sum += image[im_pos] * temp[x_filt]; | ||
| 896 | ++im_pos; | ||
| 897 | } | ||
| 898 | y_im_lin += x_dim; | ||
| 899 | } | ||
| 900 | result[res_pos] = sum; | ||
| 901 | ++res_pos; | ||
| 902 | } | ||
| 903 | prev_res_pos += x_res_dim; | ||
| 904 | } | ||
| 905 | prev_res_pos = rt_edge_res_pos; | ||
| 906 | _Pragma( "loopbound min 1 max 4" ) | ||
| 907 | for ( x_pos += ( 1 - last_ctr_col ); /* right edge */ | ||
| 908 | x_pos < x_stop; | ||
| 909 | x_pos += xgrid_step ) { | ||
| 910 | res_pos = prev_res_pos; | ||
| 911 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, 0, temp, FILTER ); | ||
| 912 | _Pragma( "loopbound min 41 max 97" ) | ||
| 913 | for ( y_pos = first_row; y_pos < last_ctr_row; | ||
| 914 | y_pos += ygrid_step_full ) { | ||
| 915 | sum = 0.0f; | ||
| 916 | x_filt = 0, y_im_lin = y_pos; | ||
| 917 | _Pragma( "loopbound min 1 max 15" ) | ||
| 918 | for ( y_filt_lin = x_fdim; | ||
| 919 | y_filt_lin <= filt_size; | ||
| 920 | y_filt_lin += x_fdim ) { | ||
| 921 | _Pragma( "loopbound min 1 max 15" ) | ||
| 922 | for ( im_pos = y_im_lin + last_ctr_col; | ||
| 923 | x_filt < y_filt_lin; | ||
| 924 | ++x_filt ) { | ||
| 925 | sum += image[im_pos] * temp[x_filt]; | ||
| 926 | ++im_pos; | ||
| 927 | } | ||
| 928 | y_im_lin += x_dim; | ||
| 929 | } | ||
| 930 | result[res_pos] = sum; | ||
| 931 | res_pos += x_res_dim; | ||
| 932 | } | ||
| 933 | prev_res_pos++; | ||
| 934 | } /* end mid */ | ||
| 935 | |||
| 936 | res_pos -= ( x_res_dim - 1 ); /* go to lower left corner */ | ||
| 937 | _Pragma( "loopbound min 1 max 4" ) | ||
| 938 | for ( y_pos = ( ( y_pos - last_ctr_row ) / x_dim ) + 1; /* bottom */ | ||
| 939 | y_pos < y_stop; | ||
| 940 | y_pos += ygrid_step ) { | ||
| 941 | _Pragma( "loopbound min 1 max 4" ) | ||
| 942 | for ( x_pos = xgrid_start - x_fmid; /* bottom-left corner */ | ||
| 943 | x_pos < 1; | ||
| 944 | x_pos += xgrid_step ) { | ||
| 945 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, y_pos, temp, FILTER ); | ||
| 946 | sum = 0.0f; | ||
| 947 | x_filt = 0, y_im_lin = last_ctr_row; | ||
| 948 | _Pragma( "loopbound min 1 max 15" ) | ||
| 949 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 950 | y_filt_lin += x_fdim ) { | ||
| 951 | _Pragma( "loopbound min 1 max 15" ) | ||
| 952 | for ( im_pos = y_im_lin; | ||
| 953 | x_filt < y_filt_lin; | ||
| 954 | ++x_filt ) { | ||
| 955 | sum += image[im_pos] * temp[x_filt]; | ||
| 956 | ++im_pos; | ||
| 957 | } | ||
| 958 | y_im_lin += x_dim; | ||
| 959 | } | ||
| 960 | result[res_pos] = sum; | ||
| 961 | ++res_pos; | ||
| 962 | } | ||
| 963 | epic_reflect1( filt, x_fdim, y_fdim, 0, y_pos, temp, FILTER ); | ||
| 964 | _Pragma( "loopbound min 41 max 46" ) | ||
| 965 | for ( x_pos = first_col; /* bottom edge */ | ||
| 966 | x_pos < last_ctr_col; | ||
| 967 | x_pos += xgrid_step ) { | ||
| 968 | sum = 0.0f; | ||
| 969 | x_filt = 0, y_im_lin = last_ctr_row; | ||
| 970 | _Pragma( "loopbound min 1 max 15" ) | ||
| 971 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 972 | y_filt_lin += x_fdim ) { | ||
| 973 | _Pragma( "loopbound min 1 max 15" ) | ||
| 974 | for ( im_pos = x_pos + y_im_lin; | ||
| 975 | x_filt < y_filt_lin; | ||
| 976 | ++x_filt ) { | ||
| 977 | sum += image[im_pos] * temp[x_filt]; | ||
| 978 | ++im_pos; | ||
| 979 | } | ||
| 980 | y_im_lin += x_dim; | ||
| 981 | } | ||
| 982 | result[res_pos] = sum; | ||
| 983 | ++res_pos; | ||
| 984 | } | ||
| 985 | _Pragma( "loopbound min 1 max 4" ) | ||
| 986 | for ( x_pos += 1 - last_ctr_col; /* bottom-right corner */ | ||
| 987 | x_pos < x_stop; | ||
| 988 | x_pos += xgrid_step ) { | ||
| 989 | epic_reflect1( filt, x_fdim, y_fdim, x_pos, y_pos, temp, FILTER ); | ||
| 990 | sum = 0.0f; | ||
| 991 | x_filt = 0, y_im_lin = last_ctr_row; | ||
| 992 | _Pragma( "loopbound min 1 max 15" ) | ||
| 993 | for ( y_filt_lin = x_fdim; y_filt_lin <= filt_size; | ||
| 994 | y_filt_lin += x_fdim ) { | ||
| 995 | _Pragma( "loopbound min 1 max 15" ) | ||
| 996 | for ( im_pos = y_im_lin + last_ctr_col; | ||
| 997 | x_filt < y_filt_lin; | ||
| 998 | ++x_filt ) { | ||
| 999 | sum += image[im_pos] * temp[x_filt]; | ||
| 1000 | ++im_pos; | ||
| 1001 | } | ||
| 1002 | y_im_lin += x_dim; | ||
| 1003 | } | ||
| 1004 | result[res_pos] = sum; | ||
| 1005 | ++res_pos; | ||
| 1006 | } | ||
| 1007 | } /* end bottom */ | ||
| 1008 | |||
| 1009 | } /* end of epic_internal_filter */ | ||
| 1010 | |||
| 1011 | |||
| 1012 | /* | ||
| 1013 | The following function determine how edges are to be handled | ||
| 1014 | when performing convolutions of images with linear filters. | ||
| 1015 | Any edge handling function which is local and linear may be defined, | ||
| 1016 | except (unfortunately) constants cannot be added. So to treat the | ||
| 1017 | edges as if the image is surrounded by a gray field, you must paste it | ||
| 1018 | into a gray image, convolve, and crop it out... | ||
| 1019 | The main convolution function is called epic_internal_filter. The idea | ||
| 1020 | is that the convolution function calls the edge handling function which | ||
| 1021 | computes a new filter based on the old filter and the distance to the | ||
| 1022 | edge of the image. For example, reflection is done by reflecting the | ||
| 1023 | filter through the appropriate axis and summing. | ||
| 1024 | */ | ||
| 1025 | |||
| 1026 | /* | ||
| 1027 | ---------------- EDGE HANDLER ARGUMENTS ------------------------ | ||
| 1028 | filt - floating point array of filter taps. | ||
| 1029 | x_dim, y_dim - x and y dimensions of filt. | ||
| 1030 | x_pos - position of filter relative to the horizontal image edges. Negative | ||
| 1031 | values indicate left edge, positive indicate right edge. Zero | ||
| 1032 | indicates that the filter is not touching either edge. An absolute | ||
| 1033 | value of 1 indicates that the edge tap of the filter is over the | ||
| 1034 | edge pixel of the image. | ||
| 1035 | y_pos - analogous to x_pos. | ||
| 1036 | result - floating point array where the resulting filter will go. The edge | ||
| 1037 | of this filter will be aligned with the image for application... | ||
| 1038 | f_or_e - equal to one of the two constants EXPAND or FILTER. | ||
| 1039 | -------------------------------------------------------------------- | ||
| 1040 | */ | ||
| 1041 | |||
| 1042 | /* -------------------------------------------------------------------- | ||
| 1043 | epic_reflect1() - Reflection through the edge pixels. This is the right | ||
| 1044 | thing to do if you are subsampling by 2, since it maintains parity (even | ||
| 1045 | pixels positions remain even, odd ones remain odd). (note: procedure differs | ||
| 1046 | depending on f_or_e parameter). */ | ||
| 1047 | void epic_reflect1( float *filt, int x_dim, int y_dim, int x_pos, int y_pos, | ||
| 1048 | float *result, int f_or_e ) | ||
| 1049 | { | ||
| 1050 | int filt_sz = x_dim * y_dim; | ||
| 1051 | register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; | ||
| 1052 | register int y_filt, x_filt, y_edge, x_edge; | ||
| 1053 | register int x_base = ( x_pos > 0 ) ? ( x_dim - 1 ) : 0; | ||
| 1054 | register int y_base = ( y_pos > 0 ) ? ( x_dim * ( y_dim - 1 ) ) : 0; | ||
| 1055 | int x_edge_dist = ( x_pos > 0 ) ? ( x_pos - x_dim ) : ( ( x_pos < -1 ) ? | ||
| 1056 | ( x_pos + 1 ) : 0 ); | ||
| 1057 | int y_edge_dist = x_dim * ( ( y_pos > 0 ) ? ( y_pos - y_dim ) : ( ( | ||
| 1058 | y_pos < -1 ) ? ( y_pos + 1 ) : 0 ) ); | ||
| 1059 | int i; | ||
| 1060 | int mx_pos = ( x_dim / 2 ) + 1; | ||
| 1061 | int my_pos = ( y_dim / 2 ) + 1; | ||
| 1062 | |||
| 1063 | _Pragma( "loopbound min 15 max 15" ) | ||
| 1064 | for ( i = 0; i < filt_sz; ++i ) result[i] = 0.0f; | ||
| 1065 | |||
| 1066 | /* if EXPAND and filter is centered on image edge, do not reflect */ | ||
| 1067 | if ( f_or_e IS EXPAND ) { | ||
| 1068 | if ( x_pos IS mx_pos ) x_stop = ( x_dim + 1 ) / 2; | ||
| 1069 | else | ||
| 1070 | if ( x_pos IS - mx_pos ) { | ||
| 1071 | x_start = x_dim / 2; | ||
| 1072 | x_edge_dist = 0; | ||
| 1073 | } | ||
| 1074 | |||
| 1075 | if ( y_pos IS my_pos ) y_stop = x_dim * ( ( y_dim + 1 ) / 2 ); | ||
| 1076 | else | ||
| 1077 | if ( y_pos IS - my_pos ) { | ||
| 1078 | y_start = x_dim * ( y_dim / 2 ); | ||
| 1079 | y_edge_dist = 0; | ||
| 1080 | } | ||
| 1081 | } | ||
| 1082 | |||
| 1083 | y_edge = y_edge_dist; | ||
| 1084 | /* reflect at boundary of image */ | ||
| 1085 | _Pragma( "loopbound min 1 max 15" ) | ||
| 1086 | for ( y_filt = y_start; y_filt < y_stop; y_filt += x_dim ) { | ||
| 1087 | x_edge = x_edge_dist; | ||
| 1088 | _Pragma( "loopbound min 1 max 15" ) | ||
| 1089 | for ( x_filt = y_filt + x_start; x_filt < y_filt + x_stop; ++x_filt ) { | ||
| 1090 | result[abs( y_base - abs( y_edge ) ) + abs( x_base - abs( x_edge ) )] | ||
| 1091 | += filt[x_filt]; | ||
| 1092 | ++x_edge; | ||
| 1093 | } | ||
| 1094 | y_edge += x_dim; | ||
| 1095 | } | ||
| 1096 | |||
| 1097 | /* if EXPAND and filter is not centered on image edge, mult edge by 2 */ | ||
| 1098 | if ( f_or_e IS EXPAND ) { | ||
| 1099 | if ( ( abs( x_pos ) ISNT mx_pos ) AND ( x_pos ISNT 0 ) ) | ||
| 1100 | _Pragma( "loopbound min 0 max 0" ) | ||
| 1101 | for ( y_filt = x_base; y_filt < filt_sz; y_filt += x_dim ) | ||
| 1102 | result[y_filt] += result[y_filt]; | ||
| 1103 | if ( ( abs( y_pos ) ISNT my_pos ) AND ( y_pos ISNT 0 ) ) | ||
| 1104 | _Pragma( "loopbound min 0 max 0" ) | ||
| 1105 | for ( x_filt = y_base; x_filt < y_base + x_dim; ++x_filt ) | ||
| 1106 | result[x_filt] += result[x_filt]; | ||
| 1107 | } | ||
| 1108 | } | ||
| 1109 | |||
| 1110 | |||
| 1111 | /* | ||
| 1112 | Main functions | ||
| 1113 | */ | ||
| 1114 | |||
| 1115 | void _Pragma( "entrypoint" ) epic_main( void ) | ||
| 1116 | { | ||
| 1117 | epic_build_pyr( epic_image, X_SIZE, Y_SIZE, NUM_LEVELS, epic_lo_filter, | ||
| 1118 | epic_hi_filter, FILTER_SIZE ); | ||
| 1119 | } | ||
| 1120 | |||
| 1121 | int epic_return(){ | ||
| 1122 | int i; | ||
| 1123 | int checksum = 0; | ||
| 1124 | for ( i=0 ; i<X_SIZE*Y_SIZE ; i+=Y_SIZE+1 ){ | ||
| 1125 | checksum += epic_image[i]; | ||
| 1126 | } | ||
| 1127 | return ( checksum == 43968 ? 0 : 1); | ||
| 1128 | } | ||
| 1129 | |||
| 1130 | int main( int argc, char **argv ) | ||
| 1131 | { | ||
| 1132 | SET_UP | ||
| 1133 | for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){ | ||
| 1134 | START_LOOP | ||
| 1135 | epic_init(); | ||
| 1136 | epic_main(); | ||
| 1137 | STOP_LOOP | ||
| 1138 | } | ||
| 1139 | WRITE_TO_FILE | ||
| 1140 | return epic_return(); | ||
| 1141 | } | ||
diff --git a/baseline/source/epic/epic.h b/baseline/source/epic/epic.h new file mode 100644 index 0000000..5e5675f --- /dev/null +++ b/baseline/source/epic/epic.h | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | #ifndef __EPIC_H_ | ||
| 2 | #define __EPIC_H_ | ||
| 3 | |||
| 4 | #define EPIC_VERSION 1.1 | ||
| 5 | |||
| 6 | /* ============= FUNDAMENTAL LIMITATIONS ============= */ | ||
| 7 | |||
| 8 | /* Maximum x- or y-size of image */ | ||
| 9 | #define MAX_IMAGE_DIM 16384 | ||
| 10 | |||
| 11 | /* Maximum number of pyramid levels (value 3*levs+1 stored in 5 bits). | ||
| 12 | This doesn't need to be larger than log2(MAX_IMAGE_DIM/FILTER_SIZE). */ | ||
| 13 | #define MAX_LEVELS 10 | ||
| 14 | |||
| 15 | /* Maximum number of quantization bins. This essentially determines | ||
| 16 | the maximum depth image to be represented. */ | ||
| 17 | #define MAX_BINS 511 | ||
| 18 | |||
| 19 | /* ============= SECONDARY (derived) LIMITATIONS ============= */ | ||
| 20 | |||
| 21 | /* This number determines the precision of the stored binsizes: | ||
| 22 | stored coefficients are accurate to +/- (1/SCALE_FACTOR). | ||
| 23 | On the other hand, this number also will limit the maximum amount | ||
| 24 | of compression. | ||
| 25 | It should not be more than [2^(8*sizeof(BinValueType))]/256. */ | ||
| 26 | #define SCALE_FACTOR 128 | ||
| 27 | |||
| 28 | /* This number must be consistent with the filters that are | ||
| 29 | hardwired into epic.c */ | ||
| 30 | #define FILTER_SIZE 15 | ||
| 31 | |||
| 32 | /* Log (base 2) of MAX_IMAGE_DIM^2: (bits required to store the dimensions) */ | ||
| 33 | #define LOG_MAX_IMAGE_SIZE 32 | ||
| 34 | |||
| 35 | /* The type of the quantized images. Must be SIGNED, and capable of holding | ||
| 36 | values in the range [-MAX_BINS, MAX_BINS] */ | ||
| 37 | typedef short BinIndexType; | ||
| 38 | |||
| 39 | /* The type used to represent the binsizes. Should be UNSIGNED. If this is | ||
| 40 | changed, be sure to change the places in epic.c and unepic.c where | ||
| 41 | binsizes are written or read from files. */ | ||
| 42 | typedef unsigned short BinValueType; | ||
| 43 | |||
| 44 | /* Number of possible values for a symbol. This must be at least | ||
| 45 | (MAX_BINS * 4) (one sign bit, one tag bit)... */ | ||
| 46 | #define NUM_SYMBOL_VALUES 65536 | ||
| 47 | |||
| 48 | /* Function prototypes. */ | ||
| 49 | void epic_build_pyr( float *image, int x_size, int y_size, int num_levels, | ||
| 50 | float *lo_filter, float *hi_filter, int filter_size ); | ||
| 51 | |||
| 52 | void epic_build_level( float *image, int level_x_size, int level_y_size, | ||
| 53 | float *lo_filter, float *hi_filter, | ||
| 54 | int filter_size, float *result_block ); | ||
| 55 | |||
| 56 | void epic_internal_transpose( register float *mat, int rows, | ||
| 57 | register int cols ); | ||
| 58 | |||
| 59 | void epic_reflect1( register float *filt, register int x_dim, int y_dim, | ||
| 60 | int x_pos, int y_pos, register float *result, int f_or_e ); | ||
| 61 | |||
| 62 | void epic_internal_filter( register float *image, register int x_dim, | ||
| 63 | register int y_dim, float *filt, | ||
| 64 | register float *temp, register int x_fdim, | ||
| 65 | register int y_fdim, int xgrid_start, | ||
| 66 | int xgrid_step, int ygrid_start, int ygrid_step, | ||
| 67 | register float *result ); | ||
| 68 | |||
| 69 | void epic_reflect1( float *filt, int x_dim, int y_dim, int x_pos, int y_pos, | ||
| 70 | float *result, int f_or_e ); | ||
| 71 | |||
| 72 | #endif // __EPIC_H_ | ||
