00001 #ifndef SOUNDLEVEL_H
00002 #define SOUNDLEVEL_H
00003
00004 #include "guicast.h"
00005 #include "pluginaclient.h"
00006
00007
00008
00009 class SoundLevelEffect;
00010 class SoundLevelWindow;
00011
00012
00013
00014
00015 class SoundLevelConfig
00016 {
00017 public:
00018 SoundLevelConfig();
00019 void copy_from(SoundLevelConfig &that);
00020 int equivalent(SoundLevelConfig &that);
00021 void interpolate(SoundLevelConfig &prev,
00022 SoundLevelConfig &next,
00023 int64_t prev_frame,
00024 int64_t next_frame,
00025 int64_t current_frame);
00026 float duration;
00027 };
00028
00029 class SoundLevelDuration : public BC_FSlider
00030 {
00031 public:
00032 SoundLevelDuration(SoundLevelEffect *plugin, int x, int y);
00033 int handle_event();
00034 SoundLevelEffect *plugin;
00035 };
00036
00037 class SoundLevelWindow : public BC_Window
00038 {
00039 public:
00040 SoundLevelWindow(SoundLevelEffect *plugin, int x, int y);
00041 void create_objects();
00042 int close_event();
00043
00044
00045 BC_Title *soundlevel_max;
00046 BC_Title *soundlevel_rms;
00047 SoundLevelDuration *duration;
00048 SoundLevelEffect *plugin;
00049 };
00050
00051
00052
00053
00054
00055 PLUGIN_THREAD_HEADER(SoundLevelEffect, SoundLevelThread, SoundLevelWindow)
00056
00057
00058
00059
00060 class SoundLevelEffect : public PluginAClient
00061 {
00062 public:
00063 SoundLevelEffect(PluginServer *server);
00064 ~SoundLevelEffect();
00065
00066 int is_realtime();
00067 void read_data(KeyFrame *keyframe);
00068 void save_data(KeyFrame *keyframe);
00069 int process_realtime(int64_t size, double *input_ptr, double *output_ptr);
00070
00071
00072
00073 int load_defaults();
00074 int save_defaults();
00075 void reset();
00076 void update_gui();
00077 void render_gui(void *data, int size);
00078
00079
00080
00081 PLUGIN_CLASS_MEMBERS(SoundLevelConfig, SoundLevelThread)
00082
00083 double rms_accum;
00084 double max_accum;
00085 int accum_size;
00086 };
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 #endif