Home | History | Annotate | Download | only in dspr2
      1 /*
      2  *  Copyright (c) 2012 The WebM project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include "vpx_config.h"
     12 #include "vp8_rtcd.h"
     13 
     14 #if HAVE_DSPR2
     15 
     16 void vp8_dequant_idct_add_y_block_dspr2(short *q, short *dq, unsigned char *dst,
     17                                         int stride, char *eobs) {
     18   int i, j;
     19 
     20   for (i = 0; i < 4; ++i) {
     21     for (j = 0; j < 4; ++j) {
     22       if (*eobs++ > 1)
     23         vp8_dequant_idct_add_dspr2(q, dq, dst, stride);
     24       else {
     25         vp8_dc_only_idct_add_dspr2(q[0] * dq[0], dst, stride, dst, stride);
     26         ((int *)q)[0] = 0;
     27       }
     28 
     29       q += 16;
     30       dst += 4;
     31     }
     32 
     33     dst += 4 * stride - 16;
     34   }
     35 }
     36 
     37 void vp8_dequant_idct_add_uv_block_dspr2(short *q, short *dq,
     38                                          unsigned char *dstu,
     39                                          unsigned char *dstv, int stride,
     40                                          char *eobs) {
     41   int i, j;
     42 
     43   for (i = 0; i < 2; ++i) {
     44     for (j = 0; j < 2; ++j) {
     45       if (*eobs++ > 1)
     46         vp8_dequant_idct_add_dspr2(q, dq, dstu, stride);
     47       else {
     48         vp8_dc_only_idct_add_dspr2(q[0] * dq[0], dstu, stride, dstu, stride);
     49         ((int *)q)[0] = 0;
     50       }
     51 
     52       q += 16;
     53       dstu += 4;
     54     }
     55 
     56     dstu += 4 * stride - 8;
     57   }
     58 
     59   for (i = 0; i < 2; ++i) {
     60     for (j = 0; j < 2; ++j) {
     61       if (*eobs++ > 1)
     62         vp8_dequant_idct_add_dspr2(q, dq, dstv, stride);
     63       else {
     64         vp8_dc_only_idct_add_dspr2(q[0] * dq[0], dstv, stride, dstv, stride);
     65         ((int *)q)[0] = 0;
     66       }
     67 
     68       q += 16;
     69       dstv += 4;
     70     }
     71 
     72     dstv += 4 * stride - 8;
     73   }
     74 }
     75 
     76 #endif
     77