Coverage Report

Created: 2026-10-17 07:08

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/tremor/window.c
Line
Count
Source
1
/********************************************************************
2
 *                                                                  *
3
 * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
4
 *                                                                  *
5
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
6
 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
7
 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
8
 *                                                                  *
9
 * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
10
 * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
11
 *                                                                  *
12
 ********************************************************************
13
14
 function: window functions
15
16
 ********************************************************************/
17
18
#include <stdlib.h>
19
#include <math.h>
20
#include "misc.h"
21
#include "window.h"
22
#include "window_lookup.h"
23
24
22.8k
const void *_vorbis_window(int type, int left){
25
26
22.8k
  switch(type){
27
22.8k
  case 0:
28
29
22.8k
    switch(left){
30
2.41k
    case 32:
31
2.41k
      return vwin64;
32
4.80k
    case 64:
33
4.80k
      return vwin128;
34
2.42k
    case 128:
35
2.42k
      return vwin256;
36
1.71k
    case 256:
37
1.71k
      return vwin512;
38
2.83k
    case 512:
39
2.83k
      return vwin1024;
40
3.34k
    case 1024:
41
3.34k
      return vwin2048;
42
1.68k
    case 2048:
43
1.68k
      return vwin4096;
44
3.13k
    case 4096:
45
3.13k
      return vwin8192;
46
480
    default:
47
480
      return(0);
48
22.8k
    }
49
0
    break;
50
0
  default:
51
0
    return(0);
52
22.8k
  }
53
22.8k
}
54
55
void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
56
        long *blocksizes,
57
104k
        int lW,int W,int nW){
58
  
59
104k
  LOOKUP_T *window[2]={window_p[0],window_p[1]};
60
104k
  long n=blocksizes[W];
61
104k
  long ln=blocksizes[lW];
62
104k
  long rn=blocksizes[nW];
63
64
104k
  long leftbegin=n/4-ln/4;
65
104k
  long leftend=leftbegin+ln/2;
66
67
104k
  long rightbegin=n/2+n/4-rn/4;
68
104k
  long rightend=rightbegin+rn/2;
69
  
70
104k
  int i,p;
71
72
5.76M
  for(i=0;i<leftbegin;i++)
73
5.65M
    d[i]=0;
74
75
67.7M
  for(p=0;i<leftend;i++,p++)
76
67.6M
    d[i]=MULT31(d[i],window[lW][p]);
77
78
60.2M
  for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
79
60.1M
    d[i]=MULT31(d[i],window[nW][p]);
80
81
9.51M
  for(;i<n;i++)
82
9.40M
    d[i]=0;
83
104k
}