• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2017 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 "./vp8_rtcd.h"
12 #include "vpx_mem/vpx_mem.h"
13 
vp8_dequant_idct_add_y_block_mmi(int16_t * q,int16_t * dq,uint8_t * dst,int stride,int8_t * eobs)14 void vp8_dequant_idct_add_y_block_mmi(int16_t *q, int16_t *dq, uint8_t *dst,
15                                       int stride, int8_t *eobs) {
16   int i, j;
17 
18   for (i = 0; i < 4; i++) {
19     for (j = 0; j < 4; j++) {
20       if (*eobs++ > 1) {
21         vp8_dequant_idct_add_mmi(q, dq, dst, stride);
22       } else {
23         vp8_dc_only_idct_add_mmi(q[0] * dq[0], dst, stride, dst, stride);
24         memset(q, 0, 2 * sizeof(q[0]));
25       }
26 
27       q += 16;
28       dst += 4;
29     }
30 
31     dst += 4 * stride - 16;
32   }
33 }
34 
vp8_dequant_idct_add_uv_block_mmi(int16_t * q,int16_t * dq,uint8_t * dstu,uint8_t * dstv,int stride,int8_t * eobs)35 void vp8_dequant_idct_add_uv_block_mmi(int16_t *q, int16_t *dq, uint8_t *dstu,
36                                        uint8_t *dstv, int stride,
37                                        int8_t *eobs) {
38   int i, j;
39 
40   for (i = 0; i < 2; i++) {
41     for (j = 0; j < 2; j++) {
42       if (*eobs++ > 1) {
43         vp8_dequant_idct_add_mmi(q, dq, dstu, stride);
44       } else {
45         vp8_dc_only_idct_add_mmi(q[0] * dq[0], dstu, stride, dstu, stride);
46         memset(q, 0, 2 * sizeof(q[0]));
47       }
48 
49       q += 16;
50       dstu += 4;
51     }
52 
53     dstu += 4 * stride - 8;
54   }
55 
56   for (i = 0; i < 2; i++) {
57     for (j = 0; j < 2; j++) {
58       if (*eobs++ > 1) {
59         vp8_dequant_idct_add_mmi(q, dq, dstv, stride);
60       } else {
61         vp8_dc_only_idct_add_mmi(q[0] * dq[0], dstv, stride, dstv, stride);
62         memset(q, 0, 2 * sizeof(q[0]));
63       }
64 
65       q += 16;
66       dstv += 4;
67     }
68 
69     dstv += 4 * stride - 8;
70   }
71 }
72