Coverage Report

Created: 2026-04-12 06:28

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
11.7k
const void *_vorbis_window(int type, int left){
25
26
11.7k
  switch(type){
27
11.7k
  case 0:
28
29
11.7k
    switch(left){
30
1.44k
    case 32:
31
1.44k
      return vwin64;
32
2.57k
    case 64:
33
2.57k
      return vwin128;
34
1.25k
    case 128:
35
1.25k
      return vwin256;
36
668
    case 256:
37
668
      return vwin512;
38
2.05k
    case 512:
39
2.05k
      return vwin1024;
40
1.19k
    case 1024:
41
1.19k
      return vwin2048;
42
955
    case 2048:
43
955
      return vwin4096;
44
1.59k
    case 4096:
45
1.59k
      return vwin8192;
46
0
    default:
47
0
      return(0);
48
11.7k
    }
49
0
    break;
50
0
  default:
51
0
    return(0);
52
11.7k
  }
53
11.7k
}
54
55
void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
56
        long *blocksizes,
57
79.5k
        int lW,int W,int nW){
58
  
59
79.5k
  LOOKUP_T *window[2]={window_p[0],window_p[1]};
60
79.5k
  long n=blocksizes[W];
61
79.5k
  long ln=blocksizes[lW];
62
79.5k
  long rn=blocksizes[nW];
63
64
79.5k
  long leftbegin=n/4-ln/4;
65
79.5k
  long leftend=leftbegin+ln/2;
66
67
79.5k
  long rightbegin=n/2+n/4-rn/4;
68
79.5k
  long rightend=rightbegin+rn/2;
69
  
70
79.5k
  int i,p;
71
72
2.42M
  for(i=0;i<leftbegin;i++)
73
2.34M
    d[i]=0;
74
75
50.8M
  for(p=0;i<leftend;i++,p++)
76
50.7M
    d[i]=MULT31(d[i],window[lW][p]);
77
78
45.9M
  for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
79
45.8M
    d[i]=MULT31(d[i],window[nW][p]);
80
81
4.90M
  for(;i<n;i++)
82
4.82M
    d[i]=0;
83
79.5k
}