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

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

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

revision 1.2, Fri Mar 8 19:16:35 2002 UTC revision 1.4, Sun Mar 10 00:30:55 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) {
# Line 73  Line 95 
95          return inter_matrix;          return inter_matrix;
96  }  }
97    
98    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    }
105    
106  uint8_t set_intra_matrix(uint8_t *matrix)  uint8_t set_intra_matrix(uint8_t *matrix)
107  {  {
108          int i;          int i, change = 0;
109    
110          intra_matrix_changed = 0;          custom_intra_matrix = 0;
111    
112          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
113                    if((int16_t) default_intra_matrix[i] != matrix[i])
114                            custom_intra_matrix = 1;
115                  if(intra_matrix[i] != matrix[i])                  if(intra_matrix[i] != matrix[i])
116                          intra_matrix_changed = 1;                          change = 1;
117    
118                  intra_matrix[i] = (int16_t) matrix[i];                  intra_matrix[i] = (int16_t) matrix[i];
119                  intra_matrix_fix[i] = FIX(intra_matrix[i]);                  intra_matrix_fix[i] = FIX(intra_matrix[i]);
120          }          }
121          return intra_matrix_changed;          return custom_intra_matrix | change;
122  }  }
123    
124    
125  uint8_t set_inter_matrix(uint8_t *matrix)  uint8_t set_inter_matrix(uint8_t *matrix)
126  {  {
127          int i;          int i, change = 0;
128    
129          inter_matrix_changed = 0;          custom_inter_matrix = 0;
130    
131          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
132                    if((int16_t) default_inter_matrix[i] != matrix[i])
133                            custom_inter_matrix = 1;
134                  if(inter_matrix[i] != matrix[i])                  if(inter_matrix[i] != matrix[i])
135                          inter_matrix_changed = 1;                          change = 1;
136    
137                  inter_matrix[i] = (int16_t) matrix[i];                  inter_matrix[i] = (int16_t) matrix[i];
138                  inter_matrix_fix[i] = FIX(inter_matrix[i]);                  inter_matrix_fix[i] = FIX(inter_matrix[i]);
139          }          }
140          return inter_matrix_changed;          return custom_inter_matrix | change;
141  }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

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