add lv2ui support
[goodguy/history.git] / cinelerra-5.1 / cinelerra / awindowgui.h
index 985b4a0ea99e42ca3ecaf492d863e1d148292501..440b4019c41df7bf804b2a891c8a15f1db741fd6 100644 (file)
@@ -27,6 +27,7 @@
 #include "assetpopup.inc"
 #include "asset.inc"
 #include "assets.inc"
+#include "audiodevice.inc"
 #include "awindow.inc"
 #include "awindowgui.inc"
 #include "clippopup.inc"
@@ -41,6 +42,9 @@
 #include "mwindow.inc"
 #include "newfolder.inc"
 #include "pluginserver.inc"
+#include "proxypopup.inc"
+#include "renderengine.inc"
+#include "samples.inc"
 #include "vicon.h"
 
 class AssetPicon : public BC_ListBoxItem
@@ -55,8 +59,13 @@ public:
 
        void create_objects();
        void reset();
-       void draw_wave(VFrame *frame, double *dp, int len,
+       static void draw_hue_bar(VFrame *frame, double t);
+       static void draw_wave(VFrame *frame, double *dp, int len,
                int base_color, int line_color);
+       void open_render_engine(EDL *edl, int is_audio);
+       void close_render_engine();
+       void render_video(int64_t pos, VFrame *vfrm);
+       void render_audio(int64_t pos, Samples **samples, int len);
 
        MWindow *mwindow;
        AWindowGUI *gui;
@@ -79,6 +88,26 @@ public:
        PluginServer *plugin;
        Label *label;
        VIcon *vicon;
+       RenderEngine *render_engine;
+};
+
+typedef int16_t vicon_audio_t;
+
+class AssetVIconAudio : public Thread
+{
+public:
+       AssetVIconAudio(AWindowGUI *gui);
+       ~AssetVIconAudio();
+
+       void run();
+       void start(AssetVIcon *vicon);
+       void stop(int wait);
+
+       AWindowGUI *gui;
+       AudioDevice *audio;
+       AssetVIcon *vicon;
+       int interrupted;
+       int audio_pos;
 };
 
 class AssetVIcon : public VIcon {
@@ -91,6 +120,9 @@ public:
        int64_t set_seq_no(int64_t no);
        int get_vx();
        int get_vy();
+       void load_audio();
+       void start_audio();
+       void stop_audio();
 
        AssetVIcon(AssetPicon *picon, int w, int h, double framerate, int64_t length);
        ~AssetVIcon();
@@ -148,7 +180,8 @@ public:
        int drag_motion();
        int drag_stop();
 // Collect items into the drag vectors of MainSession
-       void collect_assets();
+       void collect_assets(int proxy=0);
+       EDL *collect_proxy(Indexable *indexable);
        void create_persistent_folder(ArrayList<BC_ListBoxItem*> *output,
                int do_audio,
                int do_video,
@@ -232,15 +265,18 @@ public:
        AssetPopup *asset_menu;
        ClipPopup *clip_menu;
        LabelPopup *label_menu;
+       ProxyPopup *proxy_menu;
        EffectListMenu *effectlist_menu;
        AssetListMenu *assetlist_menu;
        ClipListMenu *cliplist_menu;
        LabelListMenu *labellist_menu;
+       ProxyListMenu *proxylist_menu;
        FolderListMenu *folderlist_menu;
        AddTools *add_tools;
 // Temporary for reading picons from files
        VFrame *temp_picon;
        VIconThread *vicon_thread;
+       AssetVIconAudio *vicon_audio;
 
        int64_t plugin_visibility;
        AWindowRemovePlugin *remove_plugin;