48 lines
1.4 KiB
C++
48 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <nan.h>
|
|
#include <atomic>
|
|
|
|
namespace tc::audio {
|
|
class AudioLevelMeter;
|
|
}
|
|
|
|
namespace tc::audio::recorder {
|
|
class AudioLevelMeterWrapper : public Nan::ObjectWrap {
|
|
public:
|
|
/* Static JavaScript methods */
|
|
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 NAN_METHOD(create_level_meter);
|
|
|
|
explicit AudioLevelMeterWrapper(std::shared_ptr<AudioLevelMeter>);
|
|
~AudioLevelMeterWrapper() override;
|
|
|
|
/* JavaScript member methods */
|
|
static NAN_METHOD(start);
|
|
static NAN_METHOD(running);
|
|
static NAN_METHOD(stop);
|
|
static NAN_METHOD(set_callback);
|
|
|
|
inline void wrap(v8::Local<v8::Object> object) {
|
|
Nan::ObjectWrap::Wrap(object);
|
|
}
|
|
private:
|
|
static void timer_callback(uv_timer_t*);
|
|
|
|
std::shared_ptr<AudioLevelMeter> handle{};
|
|
|
|
/* Access only within the js event loop */
|
|
uv_timer_t update_timer{};
|
|
size_t update_timer_interval{50};
|
|
|
|
Nan::Persistent<v8::Function> callback{};
|
|
|
|
void test_timer();
|
|
};
|
|
} |