[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.4 - (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 :     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 :     };
18 : Isibaar 1.1
19 : Isibaar 1.2 int16_t intra_matrix[64] = {
20 : Isibaar 1.1 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 :     };
29 :    
30 : Isibaar 1.2 int16_t intra_matrix_fix[64] = {
31 :     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 :     };
40 :    
41 : Isibaar 1.3 uint8_t default_inter_matrix[64] = {
42 :     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 :     };
51 :    
52 : Isibaar 1.2 int16_t inter_matrix[64] = {
53 : Isibaar 1.1 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 :     };
62 :    
63 : Isibaar 1.2 int16_t inter_matrix_fix[64] = {
64 :     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 :     };
73 :    
74 :     uint8_t get_intra_matrix_status(void) {
75 : Isibaar 1.3 return custom_intra_matrix;
76 : Isibaar 1.2 }
77 : Isibaar 1.1
78 : Isibaar 1.2 uint8_t get_inter_matrix_status(void) {
79 : Isibaar 1.3 return custom_inter_matrix;
80 : Isibaar 1.2 }
81 :    
82 :     void set_intra_matrix_status(uint8_t status) {
83 : Isibaar 1.3 custom_intra_matrix = status;
84 : Isibaar 1.2 }
85 : Isibaar 1.1
86 : Isibaar 1.2 void set_inter_matrix_status(uint8_t status) {
87 : Isibaar 1.3 custom_inter_matrix = status;
88 : Isibaar 1.2 }
89 : Isibaar 1.1
90 : Isibaar 1.2 int16_t *get_intra_matrix(void) {
91 :     return intra_matrix;
92 : Isibaar 1.1 }
93 :    
94 : Isibaar 1.4 int16_t *get_inter_matrix(void) {
95 :     return inter_matrix;
96 :     }
97 :    
98 : Isibaar 1.3 uint8_t *get_default_intra_matrix(void) {
99 :     return default_intra_matrix;
100 :     }
101 :    
102 :     uint8_t *get_default_inter_matrix(void) {
103 :     return default_inter_matrix;
104 : Isibaar 1.2 }
105 : Isibaar 1.1
106 : Isibaar 1.2 uint8_t set_intra_matrix(uint8_t *matrix)
107 : Isibaar 1.1 {
108 : Isibaar 1.3 int i, change = 0;
109 : Isibaar 1.2
110 : Isibaar 1.3 custom_intra_matrix = 0;
111 : Isibaar 1.2
112 :     for(i = 0; i < 64; i++) {
113 : Isibaar 1.3 if((int16_t) default_intra_matrix[i] != matrix[i])
114 :     custom_intra_matrix = 1;
115 : Isibaar 1.2 if(intra_matrix[i] != matrix[i])
116 : Isibaar 1.3 change = 1;
117 : Isibaar 1.2
118 :     intra_matrix[i] = (int16_t) matrix[i];
119 :     intra_matrix_fix[i] = FIX(intra_matrix[i]);
120 : Isibaar 1.1 }
121 : Isibaar 1.3 return custom_intra_matrix | change;
122 : Isibaar 1.2 }
123 : Isibaar 1.1
124 : Isibaar 1.2
125 :     uint8_t set_inter_matrix(uint8_t *matrix)
126 :     {
127 : Isibaar 1.3 int i, change = 0;
128 : Isibaar 1.2
129 : Isibaar 1.3 custom_inter_matrix = 0;
130 : Isibaar 1.2
131 :     for(i = 0; i < 64; i++) {
132 : Isibaar 1.3 if((int16_t) default_inter_matrix[i] != matrix[i])
133 :     custom_inter_matrix = 1;
134 : Isibaar 1.2 if(inter_matrix[i] != matrix[i])
135 : Isibaar 1.3 change = 1;
136 : Isibaar 1.2
137 :     inter_matrix[i] = (int16_t) matrix[i];
138 :     inter_matrix_fix[i] = FIX(inter_matrix[i]);
139 :     }
140 : Isibaar 1.3 return custom_inter_matrix | change;
141 : Isibaar 1.1 }

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