[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.5, Wed Jun 12 20:38:40 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 49  Line 71 
71      FIX(23),FIX(24),FIX(25),FIX(27),FIX(28),FIX(30),FIX(31),FIX(33)      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) {  uint8_t
75          return intra_matrix_changed;  get_intra_matrix_status(void)
76    {
77            return custom_intra_matrix;
78  }  }
79    
80  uint8_t get_inter_matrix_status(void) {  uint8_t
81          return inter_matrix_changed;  get_inter_matrix_status(void)
82    {
83            return custom_inter_matrix;
84  }  }
85    
86  void set_intra_matrix_status(uint8_t status) {  void
87          intra_matrix_changed = status;  set_intra_matrix_status(uint8_t status)
88    {
89            custom_intra_matrix = status;
90  }  }
91    
92  void set_inter_matrix_status(uint8_t status) {  void
93          inter_matrix_changed = status;  set_inter_matrix_status(uint8_t status)
94    {
95            custom_inter_matrix = status;
96  }  }
97    
98  int16_t *get_intra_matrix(void) {  int16_t *
99    get_intra_matrix(void)
100    {
101          return intra_matrix;          return intra_matrix;
102  }  }
103    
104  int16_t *get_inter_matrix(void) {  int16_t *
105    get_inter_matrix(void)
106    {
107          return inter_matrix;          return inter_matrix;
108  }  }
109    
110  uint8_t set_intra_matrix(uint8_t *matrix)  uint8_t *
111    get_default_intra_matrix(void)
112    {
113            return default_intra_matrix;
114    }
115    
116    uint8_t *
117    get_default_inter_matrix(void)
118    {
119            return default_inter_matrix;
120    }
121    
122    uint8_t
123    set_intra_matrix(uint8_t * matrix)
124  {  {
125          int i;          int i, change = 0;
126    
127          intra_matrix_changed = 0;          custom_intra_matrix = 0;
128    
129          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
130                    if ((int16_t) default_intra_matrix[i] != matrix[i])
131                            custom_intra_matrix = 1;
132                  if(intra_matrix[i] != matrix[i])                  if(intra_matrix[i] != matrix[i])
133                          intra_matrix_changed = 1;                          change = 1;
134    
135                  intra_matrix[i] = (int16_t) matrix[i];                  intra_matrix[i] = (int16_t) matrix[i];
136                  intra_matrix_fix[i] = FIX(intra_matrix[i]);                  intra_matrix_fix[i] = FIX(intra_matrix[i]);
137          }          }
138          return intra_matrix_changed;          return custom_intra_matrix | change;
139  }  }
140    
141    
142  uint8_t set_inter_matrix(uint8_t *matrix)  uint8_t
143    set_inter_matrix(uint8_t * matrix)
144  {  {
145          int i;          int i, change = 0;
146    
147          inter_matrix_changed = 0;          custom_inter_matrix = 0;
148    
149          for(i = 0; i < 64; i++) {          for(i = 0; i < 64; i++) {
150                    if ((int16_t) default_inter_matrix[i] != matrix[i])
151                            custom_inter_matrix = 1;
152                  if(inter_matrix[i] != matrix[i])                  if(inter_matrix[i] != matrix[i])
153                          inter_matrix_changed = 1;                          change = 1;
154    
155                  inter_matrix[i] = (int16_t) matrix[i];                  inter_matrix[i] = (int16_t) matrix[i];
156                  inter_matrix_fix[i] = FIX(inter_matrix[i]);                  inter_matrix_fix[i] = FIX(inter_matrix[i]);
157          }          }
158          return inter_matrix_changed;          return custom_inter_matrix | change;
159  }  }

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

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