Coverage Report

Created: 2025-10-13 06:41

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
14.0k
const void *_vorbis_window(int type, int left){
25
26
14.0k
  switch(type){
27
14.0k
  case 0:
28
29
14.0k
    switch(left){
30
2.12k
    case 32:
31
2.12k
      return vwin64;
32
2.71k
    case 64:
33
2.71k
      return vwin128;
34
1.48k
    case 128:
35
1.48k
      return vwin256;
36
915
    case 256:
37
915
      return vwin512;
38
2.09k
    case 512:
39
2.09k
      return vwin1024;
40
1.68k
    case 1024:
41
1.68k
      return vwin2048;
42
1.24k
    case 2048:
43
1.24k
      return vwin4096;
44
1.81k
    case 4096:
45
1.81k
      return vwin8192;
46
0
    default:
47
0
      return(0);
48
14.0k
    }
49
0
    break;
50
0
  default:
51
0
    return(0);
52
14.0k
  }
53
14.0k
}
54
55
void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
56
        long *blocksizes,
57
92.0k
        int lW,int W,int nW){
58
  
59
92.0k
  LOOKUP_T *window[2]={window_p[0],window_p[1]};
60
92.0k
  long n=blocksizes[W];
61
92.0k
  long ln=blocksizes[lW];
62
92.0k
  long rn=blocksizes[nW];
63
64
92.0k
  long leftbegin=n/4-ln/4;
65
92.0k
  long leftend=leftbegin+ln/2;
66
67
92.0k
  long rightbegin=n/2+n/4-rn/4;
68
92.0k
  long rightend=rightbegin+rn/2;
69
  
70
92.0k
  int i,p;
71
72
3.81M
  for(i=0;i<leftbegin;i++)
73
3.72M
    d[i]=0;
74
75
56.5M
  for(p=0;i<leftend;i++,p++)
76
56.4M
    d[i]=MULT31(d[i],window[lW][p]);
77
78
50.4M
  for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
79
50.3M
    d[i]=MULT31(d[i],window[nW][p]);
80
81
6.84M
  for(;i<n;i++)
82
6.75M
    d[i]=0;
83
92.0k
}