[cvs] / xvidcore / src / quant / quant_matrix.c Repository:
ViewVC logotype

Annotation of /xvidcore/src/quant/quant_matrix.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5.2.1 - (view) (download)

1 : Isibaar 1.2 #include "quant_matrix.h"
2 : Isibaar 1.1
3 : Isibaar 1.2 #define FIX(X) (1 << 16) / (X) + 1
4 : Isibaar 1.1
5 : Isibaar 1.3 uint8_t custom_intra_matrix = 0;
6 :     uint8_t custom_inter_matrix = 0;
7 :    
8 :     uint8_t default_intra_matrix[64] = {
9 : edgomez 1.5 8, 17, 18, 19, 21, 23, 25, 27,
10 :     17, 18, 19, 21, 23, 25, 27, 28,
11 :     20, 21, 22, 23, 24, 26, 28, 30,
12 :     21, 22, 23, 24, 26, 28, 30, 32,
13 :     22, 23, 24, 26, 28, 30, 32, 35,
14 :     23, 24, 26, 28, 30, 32, 35, 38,
15 :     25, 26, 28, 30, 32, 35, 38, 41,
16 :     27, 28, 30, 32, 35, 38, 41, 45
17 : Isibaar 1.3 };
18 : Isibaar 1.1
19 : Isibaar 1.2 int16_t intra_matrix[64] = {
20 : edgomez 1.5 8, 17, 18, 19, 21, 23, 25, 27,
21 :     17, 18, 19, 21, 23, 25, 27, 28,
22 :     20, 21, 22, 23, 24, 26, 28, 30,
23 :     21, 22, 23, 24, 26, 28, 30, 32,
24 :     22, 23, 24, 26, 28, 30, 32, 35,
25 :     23, 24, 26, 28, 30, 32, 35, 38,
26 :     25, 26, 28, 30, 32, 35, 38, 41,
27 :     27, 28, 30, 32, 35, 38, 41, 45
28 : Isibaar 1.1 };
29 :    
30 : Isibaar 1.2 int16_t intra_matrix_fix[64] = {
31 : edgomez 1.5 FIX(8), FIX(17), FIX(18), FIX(19), FIX(21), FIX(23), FIX(25), FIX(27),
32 :     FIX(17), FIX(18), FIX(19), FIX(21), FIX(23), FIX(25), FIX(27), FIX(28),
33 :     FIX(20), FIX(21), FIX(22), FIX(23), FIX(24), FIX(26), FIX(28), FIX(30),
34 :     FIX(21), FIX(22), FIX(23), FIX(24), FIX(26), FIX(28), FIX(30), FIX(32),
35 :     FIX(22), FIX(23), FIX(24), FIX(26), FIX(28), FIX(30), FIX(32), FIX(35),
36 :     FIX(23), FIX(24), FIX(26), FIX(28), FIX(30), FIX(32), FIX(35), FIX(38),
37 :     FIX(25), FIX(26), FIX(28), FIX(30), FIX(32), FIX(35), FIX(38), FIX(41),
38 :     FIX(27), FIX(28), FIX(30), FIX(32), FIX(35), FIX(38), FIX(41), FIX(45)
39 : Isibaar 1.2 };
40 :    
41 : Isibaar 1.3 uint8_t default_inter_matrix[64] = {
42 : edgomez 1.5 16, 17, 18, 19, 20, 21, 22, 23,
43 :     17, 18, 19, 20, 21, 22, 23, 24,
44 :     18, 19, 20, 21, 22, 23, 24, 25,
45 :     19, 20, 21, 22, 23, 24, 26, 27,
46 :     20, 21, 22, 23, 25, 26, 27, 28,
47 :     21, 22, 23, 24, 26, 27, 28, 30,
48 :     22, 23, 24, 26, 27, 28, 30, 31,
49 :     23, 24, 25, 27, 28, 30, 31, 33
50 : Isibaar 1.3 };
51 :    
52 : Isibaar 1.2 int16_t inter_matrix[64] = {
53 : edgomez 1.5 16, 17, 18, 19, 20, 21, 22, 23,
54 :     17, 18, 19, 20, 21, 22, 23, 24,
55 :     18, 19, 20, 21, 22, 23, 24, 25,
56 :     19, 20, 21, 22, 23, 24, 26, 27,
57 :     20, 21, 22, 23, 25, 26, 27, 28,
58 :     21, 22, 23, 24, 26, 27, 28, 30,
59 :     22, 23, 24, 26, 27, 28, 30, 31,
60 :     23, 24, 25, 27, 28, 30, 31, 33
61 : Isibaar 1.1 };
62 :    
63 : Isibaar 1.2 int16_t inter_matrix_fix[64] = {
64 : edgomez 1.5 FIX(16), FIX(17), FIX(18), FIX(19), FIX(20), FIX(21), FIX(22), FIX(23),
65 :     FIX(17), FIX(18), FIX(19), FIX(20), FIX(21), FIX(22), FIX(23), FIX(24),
66 :     FIX(18), FIX(19), FIX(20), FIX(21), FIX(22), FIX(23), FIX(24), FIX(25),
67 :     FIX(19), FIX(20), FIX(21), FIX(22), FIX(23), FIX(24), FIX(26), FIX(27),
68 :     FIX(20), FIX(21), FIX(22), FIX(23), FIX(25), FIX(26), FIX(27), FIX(28),
69 :     FIX(21), FIX(22), FIX(23), FIX(24), FIX(26), FIX(27), FIX(28), FIX(30),
70 :     FIX(22), FIX(23), FIX(24), FIX(26), FIX(27), FIX(28), FIX(30), FIX(31),
71 :     FIX(23), FIX(24), FIX(25), FIX(27), FIX(28), FIX(30), FIX(31), FIX(33)
72 : Isibaar 1.2 };
73 :    
74 : edgomez 1.5 uint8_t
75 :     get_intra_matrix_status(void)
76 :     {
77 : Isibaar 1.3 return custom_intra_matrix;
78 : Isibaar 1.2 }
79 : Isibaar 1.1
80 : edgomez 1.5 uint8_t
81 :     get_inter_matrix_status(void)
82 :     {
83 : Isibaar 1.3 return custom_inter_matrix;
84 : Isibaar 1.2 }
85 :    
86 : edgomez 1.5 void
87 :     set_intra_matrix_status(uint8_t status)
88 :     {
89 : Isibaar 1.3 custom_intra_matrix = status;
90 : Isibaar 1.2 }
91 : Isibaar 1.1
92 : edgomez 1.5 void
93 :     set_inter_matrix_status(uint8_t status)
94 :     {
95 : Isibaar 1.3 custom_inter_matrix = status;
96 : Isibaar 1.2 }
97 : Isibaar 1.1
98 : edgomez 1.5 int16_t *
99 :     get_intra_matrix(void)
100 :     {
101 : Isibaar 1.2 return intra_matrix;
102 : Isibaar 1.1 }
103 :    
104 : edgomez 1.5 int16_t *
105 :     get_inter_matrix(void)
106 :     {
107 : Isibaar 1.4 return inter_matrix;
108 :     }
109 :    
110 : edgomez 1.5 uint8_t *
111 :     get_default_intra_matrix(void)
112 :     {
113 : Isibaar 1.3 return default_intra_matrix;
114 :     }
115 :    
116 : edgomez 1.5 uint8_t *
117 :     get_default_inter_matrix(void)
118 :     {
119 : Isibaar 1.3 return default_inter_matrix;
120 : Isibaar 1.2 }
121 : Isibaar 1.1
122 : edgomez 1.5 uint8_t
123 :     set_intra_matrix(uint8_t * matrix)
124 : Isibaar 1.1 {
125 : Isibaar 1.3 int i, change = 0;
126 : edgomez 1.5
127 : Isibaar 1.3 custom_intra_matrix = 0;
128 : Isibaar 1.2
129 : edgomez 1.5 for (i = 0; i < 64; i++) {
130 :     if ((int16_t) default_intra_matrix[i] != matrix[i])
131 : Isibaar 1.3 custom_intra_matrix = 1;
132 : edgomez 1.5 if (intra_matrix[i] != matrix[i])
133 : Isibaar 1.3 change = 1;
134 : Isibaar 1.2
135 :     intra_matrix[i] = (int16_t) matrix[i];
136 :     intra_matrix_fix[i] = FIX(intra_matrix[i]);
137 : Isibaar 1.1 }
138 : h 1.5.2.1 return /*custom_intra_matrix |*/ change;
139 : Isibaar 1.2 }
140 : Isibaar 1.1
141 : Isibaar 1.2
142 : edgomez 1.5 uint8_t
143 :     set_inter_matrix(uint8_t * matrix)
144 : Isibaar 1.2 {
145 : Isibaar 1.3 int i, change = 0;
146 : edgomez 1.5
147 : Isibaar 1.3 custom_inter_matrix = 0;
148 : Isibaar 1.2
149 : edgomez 1.5 for (i = 0; i < 64; i++) {
150 :     if ((int16_t) default_inter_matrix[i] != matrix[i])
151 : Isibaar 1.3 custom_inter_matrix = 1;
152 : edgomez 1.5 if (inter_matrix[i] != matrix[i])
153 : Isibaar 1.3 change = 1;
154 : Isibaar 1.2
155 :     inter_matrix[i] = (int16_t) matrix[i];
156 :     inter_matrix_fix[i] = FIX(inter_matrix[i]);
157 :     }
158 : h 1.5.2.1 return /*custom_inter_matrix |*/ change;
159 : Isibaar 1.1 }

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4