Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/genplus-gx32/core/tremor/window.c
2 views
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
const void *_vorbis_window(int type, int left){
25
26
switch(type){
27
case 0:
28
29
switch(left){
30
case 32:
31
return vwin64;
32
case 64:
33
return vwin128;
34
case 128:
35
return vwin256;
36
case 256:
37
return vwin512;
38
case 512:
39
return vwin1024;
40
case 1024:
41
return vwin2048;
42
case 2048:
43
return vwin4096;
44
case 4096:
45
return vwin8192;
46
default:
47
return(0);
48
}
49
break;
50
default:
51
return(0);
52
}
53
}
54
55
void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],
56
long *blocksizes,
57
int lW,int W,int nW){
58
59
LOOKUP_T *window[2];
60
long n=blocksizes[W];
61
long ln=blocksizes[lW];
62
long rn=blocksizes[nW];
63
64
long leftbegin=n/4-ln/4;
65
long leftend=leftbegin+ln/2;
66
67
long rightbegin=n/2+n/4-rn/4;
68
long rightend=rightbegin+rn/2;
69
70
int i,p;
71
72
window[0]=window_p[0];
73
window[1]=window_p[1];
74
75
for(i=0;i<leftbegin;i++)
76
d[i]=0;
77
78
for(p=0;i<leftend;i++,p++)
79
d[i]=MULT31(d[i],window[lW][p]);
80
81
for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
82
d[i]=MULT31(d[i],window[nW][p]);
83
84
for(;i<n;i++)
85
d[i]=0;
86
}
87
88