TeaSpeak-Client/native/serverconnection/src/audio/js/AudioFilter.h

69 lines
1.8 KiB
C++

#pragma once
#include <nan.h>
#include <include/NanEventCallback.h>
namespace tc {
namespace audio {
namespace filter {
class Filter;
}
namespace recorder {
class AudioConsumerWrapper;
class AudioFilterWrapper : public Nan::ObjectWrap {
friend class AudioConsumerWrapper;
public:
static NAN_MODULE_INIT(Init);
static NAN_METHOD(NewInstance);
static inline Nan::Persistent<v8::Function> & constructor() {
static Nan::Persistent<v8::Function> my_constructor;
return my_constructor;
}
static inline Nan::Persistent<v8::FunctionTemplate> & constructor_template() {
static Nan::Persistent<v8::FunctionTemplate> my_constructor_template;
return my_constructor_template;
}
AudioFilterWrapper(const std::string& name, const std::shared_ptr<filter::Filter>& /* handle */);
virtual ~AudioFilterWrapper();
static NAN_METHOD(_get_name);
/* VAD and Threshold */
static NAN_METHOD(_get_margin_frames);
static NAN_METHOD(_set_margin_frames);
/* VAD relevant */
static NAN_METHOD(_get_level);
/* threshold filter relevant */
static NAN_METHOD(_get_threshold);
static NAN_METHOD(_set_threshold);
static NAN_METHOD(_get_attack_smooth);
static NAN_METHOD(_set_attack_smooth);
static NAN_METHOD(_get_release_smooth);
static NAN_METHOD(_set_release_smooth);
static NAN_METHOD(_set_analyze_filter);
/* consume filter */
static NAN_METHOD(_is_consuming);
static NAN_METHOD(_set_consuming);
inline std::shared_ptr<filter::Filter> filter() { return this->_filter; }
private:
std::shared_ptr<filter::Filter> _filter;
std::string _name;
void do_wrap(const v8::Local<v8::Object>& /* object */);
Nan::callback_t<float> _call_analyzed;
Nan::Persistent<v8::Function> _callback_analyzed;
};
}
}
}