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

Diff of /trunk/xvidcore/src/quant/quant_matrix.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4, Fri Mar 8 19:17:46 2002 UTC revision 20, Sat Mar 9 21:44:47 2002 UTC
# Line 2  Line 2 
2    
3  #define FIX(X) (1 << 16) / (X) + 1  #define FIX(X) (1 << 16) / (X) + 1
4    
5  uint8_t intra_matrix_changed;  uint8_t custom_intra_matrix = 0;
6  uint8_t inter_matrix_changed;  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    
19  int16_t intra_matrix[64] = {  int16_t intra_matrix[64] = {
20       8,17,18,19,21,23,25,27,       8,17,18,19,21,23,25,27,
# Line 27  Line 38 
38      FIX(27),FIX(28),FIX(30),FIX(32),FIX(35),FIX(38),FIX(41),FIX(45)      FIX(27),FIX(28),FIX(30),FIX(32),FIX(35),FIX(38),FIX(41),FIX(45)
39  };  };
40    
41    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  int16_t inter_matrix[64] = {  int16_t inter_matrix[64] = {
53      16,17,18,19,20,21,22,23,      16,17,18,19,20,21,22,23,
54      17,18,19,20,21,22,23,24,      17,18,19,20,21,22,23,24,
# Line 50  Line 72 
72  };  };
73    
74  uint8_t get_intra_matrix_status(void) {  uint8_t get_intra_matrix_status(void) {
75          return intra_matrix_changed;          return custom_intra_matrix;
76  }  }
77    
78  uint8_t get_inter_matrix_status(void) {  uint8_t get_inter_matrix_status(void) {
79          return inter_matrix_changed;          return custom_inter_matrix;
80  }  }
81    
82  void set_intra_matrix_status(uint8_t status) {  void set_intra_matrix_status(uint8_t status) {
83          intra_matrix_changed = status;          custom_intra_matrix = status;
84  }  }
85    
86  void set_inter_matrix_status(uint8_t status) {  void set_inter_matrix_status(uint8_t status) {
87          inter_matrix_changed = status;          custom_inter_matrix = status;
88  }  }
89    
90  int16_t *get_intra_matrix(void) {  int16_t *get_intra_matrix(void) {
91          return intra_matrix;          return intra_matrix;
92  }  }
93    
94  int16_t *get_inter_matrix(void) {  uint8_t *get_default_intra_matrix(void) {
95          return inter_matrix;          return default_intra_matrix;
96    }
97    
98    uint8_t *get_default_inter_matrix(void) {
99            return default_inter_matrix;
100  }  }
101    
102  uint8_t set_intra_matrix(uint8_t *matrix)  uint8_t set_intra_matrix(uint8_t *matrix)
103  {  {
104          int i;          int i, change = 0;
105    
106          intra_matrix_changed = 0;          custom_intra_matrix = 0;
107    
108          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
109                    if((int16_t) default_intra_matrix[i] != matrix[i])
110                            custom_intra_matrix = 1;
111                  if(intra_matrix[i] != matrix[i])                  if(intra_matrix[i] != matrix[i])
112                          intra_matrix_changed = 1;                          change = 1;
113    
114                  intra_matrix[i] = (int16_t) matrix[i];                  intra_matrix[i] = (int16_t) matrix[i];
115                  intra_matrix_fix[i] = FIX(intra_matrix[i]);                  intra_matrix_fix[i] = FIX(intra_matrix[i]);
116          }          }
117          return intra_matrix_changed;          return custom_intra_matrix | change;
118  }  }
119    
120    
121  uint8_t set_inter_matrix(uint8_t *matrix)  uint8_t set_inter_matrix(uint8_t *matrix)
122  {  {
123          int i;          int i, change = 0;
124    
125          inter_matrix_changed = 0;          custom_inter_matrix = 0;
126    
127          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
128                    if((int16_t) default_inter_matrix[i] != matrix[i])
129                            custom_inter_matrix = 1;
130                  if(inter_matrix[i] != matrix[i])                  if(inter_matrix[i] != matrix[i])
131                          inter_matrix_changed = 1;                          change = 1;
132    
133                  inter_matrix[i] = (int16_t) matrix[i];                  inter_matrix[i] = (int16_t) matrix[i];
134                  inter_matrix_fix[i] = FIX(inter_matrix[i]);                  inter_matrix_fix[i] = FIX(inter_matrix[i]);
135          }          }
136          return inter_matrix_changed;          return custom_inter_matrix | change;
137  }  }

Legend:
Removed from v.4  
changed lines
  Added in v.20

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