[svn] / branches / release-1_3-branch / xvidcore / src / quant / quant_matrix.c Repository:
ViewVC logotype

Diff of /branches/release-1_3-branch/xvidcore/src/quant/quant_matrix.c

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

trunk/xvidcore/src/quant/quant_matrix.c revision 1382, Mon Mar 22 22:36:25 2004 UTC branches/release-1_3-branch/xvidcore/src/quant/quant_matrix.c revision 2180, Tue Nov 12 14:48:35 2019 UTC
# Line 20  Line 20 
20   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
21   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
22   *   *
23   * $Id: quant_matrix.c,v 1.14 2004-03-22 22:36:24 edgomez Exp $   * $Id$
24   *   *
25   ****************************************************************************/   ****************************************************************************/
26    
27    #include "../global.h"
28  #include "quant_matrix.h"  #include "quant_matrix.h"
29    
30  #define FIX(X)   (((X)==1) ? 0xFFFF : ((1UL << 16) / (X) + 1))  #define FIX(X)   (((X)==1) ? 0xFFFF : ((1UL << 16) / (X) + 1))
# Line 112  Line 113 
113  {  {
114          int i;          int i;
115          uint16_t *intra_matrix = mpeg_quant_matrices + 0*64;          uint16_t *intra_matrix = mpeg_quant_matrices + 0*64;
         uint16_t *intra_matrix1 = mpeg_quant_matrices + 1*64;  
         uint16_t *intra_matrix_fix = mpeg_quant_matrices + 2*64;  
         uint16_t *intra_matrix_fixl = mpeg_quant_matrices + 3*64;  
116    
117          for (i = 0; i < 64; i++) {          for (i = 0; i < 64; i++) {
118                  intra_matrix[i] = (!i) ? (uint16_t)8: (uint16_t)matrix[i];                  intra_matrix[i] = (!i) ? (uint16_t)8: (uint16_t)MAX(1, matrix[i]);
119                  intra_matrix1[i] = (intra_matrix[i]>>1);          }
120                  intra_matrix1[i] += ((intra_matrix[i] == 1) ? 1: 0);  }
121                  intra_matrix_fix[i] = FIX(intra_matrix[i]);  
122                  intra_matrix_fixl[i] = FIXL(intra_matrix[i]);  void
123    init_intra_matrix(uint16_t * mpeg_quant_matrices, uint32_t quant)
124    {
125            int i;
126            uint16_t *intra_matrix = mpeg_quant_matrices + 0*64;
127            uint16_t *intra_matrix_rec = mpeg_quant_matrices + 1*64;
128    
129            for (i = 0; i < 64; i++) {
130                    uint32_t div = intra_matrix[i]*quant;
131                    intra_matrix_rec[i] = ((uint32_t)((1<<SCALEBITS) + (div>>1)))/div;
132          }          }
133  }  }
134    
# Line 135  Line 142 
142          uint16_t *inter_matrix_fixl = mpeg_quant_matrices + 7*64;          uint16_t *inter_matrix_fixl = mpeg_quant_matrices + 7*64;
143    
144          for (i = 0; i < 64; i++) {          for (i = 0; i < 64; i++) {
145                  inter_matrix1[i] = ((inter_matrix[i] = (int16_t) matrix[i])>>1);                  inter_matrix1[i] = ((inter_matrix[i] = (int16_t)MAX(1, (matrix[i])>>1)));
146                  inter_matrix1[i] += ((inter_matrix[i] == 1) ? 1: 0);                  inter_matrix1[i] += ((inter_matrix[i] == 1) ? 1: 0);
147                  inter_matrix_fix[i] = FIX(inter_matrix[i]);                  inter_matrix_fix[i] = (uint16_t) FIX(inter_matrix[i]);
148                  inter_matrix_fixl[i] = FIXL(inter_matrix[i]);                  inter_matrix_fixl[i] = (uint16_t) FIXL(inter_matrix[i]);
149          }          }
150  }  }
151    

Legend:
Removed from v.1382  
changed lines
  Added in v.2180

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