[svn] / branches / dev-api-4 / xvidcore / src / quant / quant_matrix.c Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/src/quant/quant_matrix.c

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

revision 20, Sat Mar 9 21:44:47 2002 UTC revision 441, Sat Sep 7 11:14:41 2002 UTC
# Line 1  Line 1 
1    /*****************************************************************************
2     *
3     *  XVID MPEG-4 VIDEO CODEC
4     *  - Custom matrix quantization functions -
5     *
6     *  Copyright(C) 2002 Michael Militzer
7     *
8     *  This program is an implementation of a part of one or more MPEG-4
9     *  Video tools as specified in ISO/IEC 14496-2 standard.  Those intending
10     *  to use this software module in hardware or software products are
11     *  advised that its use may infringe existing patents or copyrights, and
12     *  any such use would be at such party's own risk.  The original
13     *  developer of this software module and his/her company, and subsequent
14     *  editors and their companies, will have no liability for use of this
15     *  software or modifications or derivatives thereof.
16     *
17     *  This program is free software ; you can redistribute it and/or modify
18     *  it under the terms of the GNU General Public License as published by
19     *  the Free Software Foundation ; either version 2 of the License, or
20     *  (at your option) any later version.
21     *
22     *  This program is distributed in the hope that it will be useful,
23     *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
24     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25     *  GNU General Public License for more details.
26     *
27     *  You should have received a copy of the GNU General Public License
28     *  along with this program ; if not, write to the Free Software
29     *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
30     *
31     *  $Id: quant_matrix.c,v 1.6 2002-09-07 11:14:41 edgomez Exp $
32     *
33     ****************************************************************************/
34    
35  #include "quant_matrix.h"  #include "quant_matrix.h"
36    
37  #define FIX(X) (1 << 16) / (X) + 1  #define FIX(X) (1 << 16) / (X) + 1
38    
39    /*****************************************************************************
40     * Local data
41     ****************************************************************************/
42    
43    /* ToDo : remove all this local to make this module thread safe */
44  uint8_t custom_intra_matrix = 0;  uint8_t custom_intra_matrix = 0;
45  uint8_t custom_inter_matrix = 0;  uint8_t custom_inter_matrix = 0;
46    
47  uint8_t default_intra_matrix[64] = {  static uint8_t const default_intra_matrix[64] = {
48       8,17,18,19,21,23,25,27,       8,17,18,19,21,23,25,27,
49      17,18,19,21,23,25,27,28,      17,18,19,21,23,25,27,28,
50      20,21,22,23,24,26,28,30,      20,21,22,23,24,26,28,30,
# Line 16  Line 55 
55      27,28,30,32,35,38,41,45      27,28,30,32,35,38,41,45
56  };  };
57    
58  int16_t intra_matrix[64] = {  static int16_t intra_matrix[64] = {
59       8,17,18,19,21,23,25,27,       8,17,18,19,21,23,25,27,
60      17,18,19,21,23,25,27,28,      17,18,19,21,23,25,27,28,
61      20,21,22,23,24,26,28,30,      20,21,22,23,24,26,28,30,
# Line 27  Line 66 
66      27,28,30,32,35,38,41,45      27,28,30,32,35,38,41,45
67  };  };
68    
69  int16_t intra_matrix_fix[64] = {  static int16_t intra_matrix_fix[64] = {
70       FIX(8),FIX(17),FIX(18),FIX(19),FIX(21),FIX(23),FIX(25),FIX(27),       FIX(8),FIX(17),FIX(18),FIX(19),FIX(21),FIX(23),FIX(25),FIX(27),
71      FIX(17),FIX(18),FIX(19),FIX(21),FIX(23),FIX(25),FIX(27),FIX(28),      FIX(17),FIX(18),FIX(19),FIX(21),FIX(23),FIX(25),FIX(27),FIX(28),
72      FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),FIX(26),FIX(28),FIX(30),      FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),FIX(26),FIX(28),FIX(30),
# Line 38  Line 77 
77      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)
78  };  };
79    
80  uint8_t default_inter_matrix[64] = {  static uint8_t const default_inter_matrix[64] = {
81      16,17,18,19,20,21,22,23,      16,17,18,19,20,21,22,23,
82      17,18,19,20,21,22,23,24,      17,18,19,20,21,22,23,24,
83      18,19,20,21,22,23,24,25,      18,19,20,21,22,23,24,25,
# Line 49  Line 88 
88      23,24,25,27,28,30,31,33      23,24,25,27,28,30,31,33
89  };  };
90    
91  int16_t inter_matrix[64] = {  static int16_t inter_matrix[64] = {
92      16,17,18,19,20,21,22,23,      16,17,18,19,20,21,22,23,
93      17,18,19,20,21,22,23,24,      17,18,19,20,21,22,23,24,
94      18,19,20,21,22,23,24,25,      18,19,20,21,22,23,24,25,
# Line 60  Line 99 
99      23,24,25,27,28,30,31,33      23,24,25,27,28,30,31,33
100  };  };
101    
102  int16_t inter_matrix_fix[64] = {  static int16_t inter_matrix_fix[64] = {
103      FIX(16),FIX(17),FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),      FIX(16),FIX(17),FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),
104      FIX(17),FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),      FIX(17),FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),
105      FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),FIX(25),      FIX(18),FIX(19),FIX(20),FIX(21),FIX(22),FIX(23),FIX(24),FIX(25),
# Line 71  Line 110 
110      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)
111  };  };
112    
113  uint8_t get_intra_matrix_status(void) {  /*****************************************************************************
114     * Functions
115     ****************************************************************************/
116    
117    uint8_t
118    get_intra_matrix_status(void)
119    {
120          return custom_intra_matrix;          return custom_intra_matrix;
121  }  }
122    
123  uint8_t get_inter_matrix_status(void) {  uint8_t
124    get_inter_matrix_status(void)
125    {
126          return custom_inter_matrix;          return custom_inter_matrix;
127  }  }
128    
129  void set_intra_matrix_status(uint8_t status) {  void
130    set_intra_matrix_status(uint8_t status)
131    {
132          custom_intra_matrix = status;          custom_intra_matrix = status;
133  }  }
134    
135  void set_inter_matrix_status(uint8_t status) {  void
136    set_inter_matrix_status(uint8_t status)
137    {
138          custom_inter_matrix = status;          custom_inter_matrix = status;
139  }  }
140    
141  int16_t *get_intra_matrix(void) {  int16_t *
142    get_intra_matrix(void)
143    {
144          return intra_matrix;          return intra_matrix;
145  }  }
146    
147  uint8_t *get_default_intra_matrix(void) {  int16_t *
148    get_inter_matrix(void)
149    {
150            return inter_matrix;
151    }
152    
153    uint8_t *
154    get_default_intra_matrix(void)
155    {
156          return default_intra_matrix;          return default_intra_matrix;
157  }  }
158    
159  uint8_t *get_default_inter_matrix(void) {  uint8_t *
160    get_default_inter_matrix(void)
161    {
162          return default_inter_matrix;          return default_inter_matrix;
163  }  }
164    
165  uint8_t set_intra_matrix(uint8_t *matrix)  uint8_t
166    set_intra_matrix(uint8_t * matrix)
167  {  {
168          int i, change = 0;          int i, change = 0;
169    
# Line 118  Line 182 
182  }  }
183    
184    
185  uint8_t set_inter_matrix(uint8_t *matrix)  uint8_t
186    set_inter_matrix(uint8_t * matrix)
187  {  {
188          int i, change = 0;          int i, change = 0;
189    

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

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