Develop and Download Open Source Software

Browse Subversion Repository

Contents of /IntraPrediction.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4 - (show annotations) (download) (as text)
Sun Apr 5 12:08:23 2009 UTC (15 years, 1 month ago) by berupon
File MIME type: text/x-c++src
File size: 4205 byte(s)
既に他の場所で公開済みのImageCompressionのプロジェクトを取り込み。
1 #include "stdafx.h"
2
3 #include "IntraPrediction.h"
4
5 namespace IntraPrediction {
6
7 void Predictor8::vertical(const int original[8][8], int processed[8][8])
8 {
9 for (size_t x=0; x<8; ++x) {
10 processed[0][x] = original[0][x] - cols[1+x];
11 }
12 for (size_t y=1; y<8; ++y) {
13 for (size_t x=0; x<8; ++x) {
14 processed[y][x] = original[y][x] - original[y-1][x];
15 }
16 }
17 }
18
19 void Predictor8::horizontal(const int original[8][8], int processed[8][8])
20 {
21 for (size_t y=0; y<8; ++y) {
22 processed[y][0] = original[y][0] - rows[1+y];
23 for (size_t x=1; x<8; ++x) {
24 processed[y][x] = original[y][x] - original[y][x-1];
25 }
26 }
27 }
28
29 void Predictor8::dc(const int original[8][8], int processed[8][8])
30 {
31 for (size_t y=0; y<8; ++y) {
32 for (size_t x=0; x<8; ++x) {
33 processed[y][x] = original[y][x] - average;
34 }
35 }
36 }
37
38 void Predictor8::diagonalDownLeft(const int original[8][8], int processed[8][8])
39 {
40 for (size_t x=0; x<8; ++x) {
41 processed[0][x] = original[0][x] - cols[1+x];
42 }
43 for (size_t y=1; y<8; ++y) {
44 for (size_t x=0; x<7; ++x) {
45 processed[y][x] = original[y][x] - original[y-1][x+1];
46 }
47 processed[y][7] = original[y][7] - cols[9+y];
48 }
49 }
50
51 void Predictor8::diagonalDownRight(const int original[8][8], int processed[8][8])
52 {
53 for (size_t x=0; x<8; ++x) {
54 processed[0][x] = original[0][x] - cols[x];
55 }
56 for (size_t y=1; y<8; ++y) {
57 processed[y][0] = rows[y];
58 for (size_t x=1; x=8; ++x) {
59 processed[y][x] = original[y][x] - original[y-1][x-1];
60 }
61 }
62 }
63
64 void Predictor8::verticalRight_Sub(size_t offset, const int original[8][8], int processed[8][8])
65 {
66 processed[offset][0] = original[offset][0] - rows[offset];
67 for (size_t x=1; x<8; ++x) {
68 processed[offset][x] = original[offset][x] - original[offset-1][x-1];
69 }
70 for (size_t x=0; x<8; ++x) {
71 processed[offset+1][x] = original[offset+1][x] - original[offset][x];
72 }
73 }
74
75 void Predictor8::verticalRight(const int original[8][8], int processed[8][8])
76 {
77 for (size_t x=0; x<8; ++x) {
78 processed[0][x] = original[0][x] - cols[x];
79 }
80 for (size_t x=0; x<8; ++x) {
81 processed[1][x] = original[1][x] - original[0][x];
82 }
83 verticalRight_Sub(2, original, processed);
84 verticalRight_Sub(4, original, processed);
85 verticalRight_Sub(6, original, processed);
86 }
87
88 void Predictor8::horizontalDown(const int original[8][8], int processed[8][8])
89 {
90 for (size_t x=0; x<8; x+=2) {
91 processed[0][x] = original[0][x] - cols[x];
92 processed[0][x+1] = original[0][x+1] - original[0][x];
93 }
94 for (size_t y=1; y<8; ++y) {
95 processed[y][0] = original[y][0] - rows[y];
96 processed[y][1] = original[y][1] - original[y][0];
97 for (size_t x=2; x<8; x+=2) {
98 processed[y][x] = original[y][x] - original[y-1][x-1];
99 processed[y][x+1] = original[y][x+1] - original[y][x];
100 }
101 }
102 }
103
104 void Predictor8::verticalLeft_Sub(size_t offset, const int original[8][8], int processed[8][8])
105 {
106 for (size_t x=0; x<7; ++x) {
107 processed[offset][x] = original[offset][x] - original[offset-1][x+1];
108 processed[offset+1][x] = original[offset+1][x] - original[offset][x];
109 }
110 processed[offset][7] = original[offset][7] - cols[8+offset];
111 processed[offset+1][7] = original[offset+1][7] - original[offset][7];
112 }
113
114 void Predictor8::verticalLeft(const int original[8][8], int processed[8][8])
115 {
116 for (size_t x=0; x<8; ++x) {
117 processed[0][x] = original[0][x] - cols[x+2];
118 }
119 for (size_t x=0; x<8; ++x) {
120 processed[1][x] = original[1][x] - original[0][x];
121 }
122 verticalLeft_Sub(2, original, processed);
123 verticalLeft_Sub(4, original, processed);
124 verticalLeft_Sub(6, original, processed);
125 }
126
127 void Predictor8::horizontalUp(const int original[8][8], int processed[8][8])
128 {
129 for (size_t y=0; y<7; ++y) {
130 processed[y][0] = original[y][0] - rows[2+y];
131 processed[y][1] = original[y][1] - original[y][0];
132 for (size_t x=2; x<8; x+=2) {
133 processed[y][x] = original[y][x] - rows[x];
134 processed[y][x+1] = original[y][x+1] - original[y][x+1];
135 }
136 }
137 for (size_t x=0; x<8; x+=2) {
138 processed[7][x] = original[7][x] - rows[7/*9+x>>1*/];
139 processed[7][x+1] = original[7][x+1] - original[7][x];
140 }
141
142 }
143
144 } // namespace namespace IntraPrediction
145

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26