Coverage Report

Created: 2024-09-06 07:53

/src/libvpx/vp8/common/invtrans.h
Line
Count
Source
1
/*
2
 *  Copyright (c) 2010 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
#ifndef VPX_VP8_COMMON_INVTRANS_H_
12
#define VPX_VP8_COMMON_INVTRANS_H_
13
14
#include "./vpx_config.h"
15
#include "vp8_rtcd.h"
16
#include "blockd.h"
17
#include "onyxc_int.h"
18
19
#if CONFIG_MULTITHREAD
20
#include "vpx_mem/vpx_mem.h"
21
#endif
22
23
#ifdef __cplusplus
24
extern "C" {
25
#endif
26
27
1.25M
static void eob_adjust(char *eobs, short *diff) {
28
  /* eob adjust.... the idct can only skip if both the dc and eob are zero */
29
1.25M
  int js;
30
21.2M
  for (js = 0; js < 16; ++js) {
31
20.0M
    if ((eobs[js] == 0) && (diff[0] != 0)) eobs[js]++;
32
20.0M
    diff += 16;
33
20.0M
  }
34
1.25M
}
encodeframe.c:eob_adjust
Line
Count
Source
27
1.25M
static void eob_adjust(char *eobs, short *diff) {
28
  /* eob adjust.... the idct can only skip if both the dc and eob are zero */
29
1.25M
  int js;
30
21.2M
  for (js = 0; js < 16; ++js) {
31
20.0M
    if ((eobs[js] == 0) && (diff[0] != 0)) eobs[js]++;
32
20.0M
    diff += 16;
33
20.0M
  }
34
1.25M
}
Unexecuted instantiation: encodeintra.c:eob_adjust
Unexecuted instantiation: encodemb.c:eob_adjust
35
36
1.36M
static INLINE void vp8_inverse_transform_mby(MACROBLOCKD *xd) {
37
1.36M
  short *DQC = xd->dequant_y1;
38
39
1.36M
  if (xd->mode_info_context->mbmi.mode != SPLITMV) {
40
    /* do 2nd order transform on the dc block */
41
1.25M
    if (xd->eobs[24] > 1) {
42
447k
      vp8_short_inv_walsh4x4(&xd->block[24].dqcoeff[0], xd->qcoeff);
43
804k
    } else {
44
804k
      vp8_short_inv_walsh4x4_1(&xd->block[24].dqcoeff[0], xd->qcoeff);
45
804k
    }
46
1.25M
    eob_adjust(xd->eobs, xd->qcoeff);
47
48
1.25M
    DQC = xd->dequant_y1_dc;
49
1.25M
  }
50
1.36M
  vp8_dequant_idct_add_y_block(xd->qcoeff, DQC, xd->dst.y_buffer,
51
1.36M
                               xd->dst.y_stride, xd->eobs);
52
1.36M
}
encodeframe.c:vp8_inverse_transform_mby
Line
Count
Source
36
1.36M
static INLINE void vp8_inverse_transform_mby(MACROBLOCKD *xd) {
37
1.36M
  short *DQC = xd->dequant_y1;
38
39
1.36M
  if (xd->mode_info_context->mbmi.mode != SPLITMV) {
40
    /* do 2nd order transform on the dc block */
41
1.25M
    if (xd->eobs[24] > 1) {
42
447k
      vp8_short_inv_walsh4x4(&xd->block[24].dqcoeff[0], xd->qcoeff);
43
804k
    } else {
44
804k
      vp8_short_inv_walsh4x4_1(&xd->block[24].dqcoeff[0], xd->qcoeff);
45
804k
    }
46
1.25M
    eob_adjust(xd->eobs, xd->qcoeff);
47
48
1.25M
    DQC = xd->dequant_y1_dc;
49
1.25M
  }
50
1.36M
  vp8_dequant_idct_add_y_block(xd->qcoeff, DQC, xd->dst.y_buffer,
51
1.36M
                               xd->dst.y_stride, xd->eobs);
52
1.36M
}
Unexecuted instantiation: encodeintra.c:vp8_inverse_transform_mby
Unexecuted instantiation: encodemb.c:vp8_inverse_transform_mby
53
#ifdef __cplusplus
54
}  // extern "C"
55
#endif
56
57
#endif  // VPX_VP8_COMMON_INVTRANS_H_