Develop and Download Open Source Software

Browse Subversion Repository

Contents of /decode.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (show annotations) (download) (as text)
Mon Oct 11 13:26:23 2010 UTC (13 years, 7 months ago) by berupon
File MIME type: text/x-chdr
File size: 1740 byte(s)
GUIで、圧縮設定を調整して結果を確認出来るアプリケーションの作成開始。
1 #pragma once
2
3 template <int shifts, typename T>
4 T div(T value)
5 {
6 return (value + (1 << (shifts - 1))) >> shifts;
7 }
8
9
10 void decodeRightMostColumn(Quantizer& quantizer, int* rows, int values[8][8], int tmps[8][8])
11 {
12 quantizer.dequantize(values);
13 idct_8x8(values, tmps);
14 for (size_t i=0; i<8; ++i) {
15 rows[i] = div<22>(values[i][7]);
16 }
17 }
18
19 void decodeBottomRow(Quantizer& quantizer, int* cols, int values[8][8], int tmps[8][8])
20 {
21 quantizer.dequantize(values);
22 idct_8x8(values, tmps);
23 for (size_t i=0; i<8; ++i) {
24 cols[i] = div<22>(values[7][i]);
25 }
26 }
27
28 void decodeRightMostColumnAndBottomRow(Quantizer& quantizer, int* rows, int* cols, int values[8][8], int tmps[8][8])
29 {
30 quantizer.dequantize(values);
31 idct_8x8(values, tmps);
32
33 for (size_t i=0; i<8; ++i) {
34 rows[i] = div<22>(values[i][7]);
35 }
36 for (size_t i=0; i<8; ++i) {
37 cols[i] = div<22>(values[7][i]);
38 }
39 }
40
41 template <typename T>
42 void decode(
43 Quantizer& quantizer,
44 size_t hBlocks, size_t vBlocks,
45 const int* in, int inLineOffsetBytes,
46 T* out, int outLineOffsetBytes
47 )
48 {
49 int values[8][8];
50 int tmps[8][8];
51
52 const int* src = in;
53 T* dest = out;
54
55 for (size_t y=0; y<vBlocks; ++y) {
56
57 const int* srcLine = src;
58 T* destLine = dest;
59
60 for (size_t x=0; x<hBlocks; ++x) {
61
62 gather(srcLine, inLineOffsetBytes, values);
63
64 quantizer.dequantize(values);
65
66 idct_8x8(values, tmps);
67 for (size_t i=0; i<8; ++i) {
68 for (size_t j=0; j<8; ++j) {
69 values[i][j] = div<22>(values[i][j]);
70 }
71 }
72
73 scatter(destLine, outLineOffsetBytes, values);
74
75 srcLine += 8;
76 destLine += 8;
77 }
78
79 OffsetPtr(src, inLineOffsetBytes*8);
80 OffsetPtr(dest, outLineOffsetBytes*8);
81 }
82 }
83

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