/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
#ifndef WINDOW_INTERFACE_H
#define WINDOW_INTERFACE_H
class Window {
public:
Window(int size) : mWindowWeights(0), mWindowSize(0) {
windowCreate(size);
}
Window() : mWindowWeights(0), mWindowSize(0) {
}
virtual ~Window(void) {
windowCleanup();
}
/* Create a Hann window of length size. This allocates memory that
should be freed using window_cleanup(). */
void windowCreate(int size);
/* Free up memory and reset size to 0. */
void windowCleanup(void);
/* Multiply the signal in data by the window weights. Place the
resulting window_size floating-point values in output. If preemp
is != 0.0, apply a 1st-order preemphasis filter, and assume that
there are window_size+1 samples available in data. */
void window(short* data, float* output, float preemp);
int getWindowSize() { return mWindowSize; }
float* getWindowWeights() { return mWindowWeights; }
private:
float* mWindowWeights;
int mWindowSize;
};
#endif /* WINDOW_INTERFACE_H */