MCPcopy Create free account
hub / github.com/OpenShot/libopenshot / updateWindow

Method updateWindow

src/audio_effects/STFT.cpp:107–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

105
106
107void STFT::updateWindow(const int new_window_type)
108{
109 window_type = new_window_type;
110
111 switch (window_type) {
112 case RECTANGULAR: {
113 for (int sample = 0; sample < fft_size; ++sample)
114 fft_window[sample] = 1.0f;
115 break;
116 }
117 case BART_LETT: {
118 for (int sample = 0; sample < fft_size; ++sample)
119 fft_window[sample] = 1.0f - fabs (2.0f * (float)sample / (float)(fft_size - 1) - 1.0f);
120 break;
121 }
122 case HANN: {
123 for (int sample = 0; sample < fft_size; ++sample)
124 fft_window[sample] = 0.5f - 0.5f * cosf (2.0f * M_PI * (float)sample / (float)(fft_size - 1));
125 break;
126 }
127 case HAMMING: {
128 for (int sample = 0; sample < fft_size; ++sample)
129 fft_window[sample] = 0.54f - 0.46f * cosf (2.0f * M_PI * (float)sample / (float)(fft_size - 1));
130 break;
131 }
132 }
133
134 float window_sum = 0.0f;
135 for (int sample = 0; sample < fft_size; ++sample)
136 window_sum += fft_window[sample];
137
138 window_scale_factor = 0.0f;
139 if (overlap != 0 && window_sum != 0.0f)
140 window_scale_factor = 1.0f / (float)overlap / window_sum * (float)fft_size;
141}
142
143
144

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected