X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fproxy.h;h=8726cb78f0793f4dc44adaa89adb78440d803fa4;hb=eecf057a9d6b8c8cffc7d0001bff89bc9cac7b05;hp=5436daf982502513ec22efb7125311ea6f12af0b;hpb=0c36fdb4fc4d4a2efe353e2b6eb0bf5a1b1485d6;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/proxy.h b/cinelerra-5.1/cinelerra/proxy.h index 5436daf9..8726cb78 100644 --- a/cinelerra-5.1/cinelerra/proxy.h +++ b/cinelerra-5.1/cinelerra/proxy.h @@ -26,12 +26,15 @@ #include "arraylist.h" #include "asset.h" #include "bcdialog.h" +#include "cache.inc" +#include "file.inc" #include "formattools.inc" #include "loadbalance.h" #include "mutex.inc" #include "mwindow.inc" +#include "renderengine.inc" -class ProxyThread; +class ProxyDialog; class ProxyWindow; #define MAX_SIZES 16 @@ -40,12 +43,13 @@ class ProxyMenuItem : public BC_MenuItem { public: ProxyMenuItem(MWindow *mwindow); + ~ProxyMenuItem(); int handle_event(); void create_objects(); MWindow *mwindow; - ProxyThread *thread; + ProxyDialog *dialog; }; class FromProxyMenuItem : public BC_MenuItem @@ -57,46 +61,90 @@ public: MWindow *mwindow; }; -class ProxyThread : public BC_DialogThread + +class ProxyRender { public: - ProxyThread(MWindow *mwindow); - ~ProxyThread(); - BC_Window* new_gui(); - void handle_close_event(int result); - static void to_proxy_path(char *new_path, Asset *asset, int scale); + ProxyRender(MWindow *mwindow, Asset *format_asset); + ~ProxyRender(); + void to_proxy_path(char *new_path, Indexable *indexable, int scale); static void from_proxy_path(char *new_path, Asset *asset, int scale); - void from_proxy(); - void to_proxy(); + + ArrayList orig_idxbls; // originals which match the proxy assets + ArrayList orig_proxies; // proxy assets + Asset *add_original(Indexable *idxbl, int new_scale); + ArrayList needed_idxbls; // originals which match the needed_assets + ArrayList needed_proxies; // assets which must be created + void add_needed(Indexable *idxbl, Asset *proxy); + + int create_needed_proxies(int new_scale); // increment the frame count by 1 void update_progress(); // if user canceled progress bar int is_canceled(); + + MWindow *mwindow; + Asset *format_asset; + MainProgressBar *progress; + Mutex *counter_lock; + int total_rendered; + int failed, canceled; +}; + +class ProxyDialog : public BC_DialogThread +{ +public: + ProxyDialog(MWindow *mwindow); + ~ProxyDialog(); + BC_Window* new_gui(); + void handle_close_event(int result); + + void from_proxy(); + void to_proxy(); // calculate possible sizes based on the original size void calculate_sizes(); void scale_to_text(char *string, int scale); MWindow *mwindow; ProxyWindow *gui; - MainProgressBar *progress; - Mutex *counter_lock; Asset *asset; + ProxyRender *proxy_render; + int new_scale; int orig_scale; - int total_rendered; - int failed; + int use_scaler; + int auto_scale; char *size_text[MAX_SIZES]; int size_factors[MAX_SIZES]; int total_sizes; }; -class ProxyReset : public BC_GenericButton +class ProxyUseScaler : public BC_CheckBox { public: - ProxyReset(MWindow *mwindow, ProxyWindow *pwindow, - int x, int y); + ProxyUseScaler(ProxyWindow *pwindow, int x, int y); + void update(); int handle_event(); - MWindow *mwindow; + + ProxyWindow *pwindow; +}; + +class ProxyAutoScale : public BC_CheckBox +{ +public: + ProxyAutoScale(ProxyWindow *pwindow, int x, int y); + void update(); + int handle_event(); + + ProxyWindow *pwindow; +}; + +class ProxyFormatTools : public FormatTools +{ +public: + ProxyFormatTools(MWindow *mwindow, ProxyWindow *window, Asset *asset); + + void update_format(); ProxyWindow *pwindow; }; @@ -105,6 +153,7 @@ class ProxyMenu : public BC_PopupMenu public: ProxyMenu(MWindow *mwindow, ProxyWindow *pwindow, int x, int y, int w, const char *text); + void update_sizes(); int handle_event(); MWindow *mwindow; ProxyWindow *pwindow; @@ -127,7 +176,7 @@ public: class ProxyWindow : public BC_Window { public: - ProxyWindow(MWindow *mwindow, ProxyThread *thread, + ProxyWindow(MWindow *mwindow, ProxyDialog *dialog, int x, int y); ~ProxyWindow(); @@ -135,11 +184,12 @@ public: void update(); MWindow *mwindow; - ProxyThread *thread; + ProxyDialog *dialog; FormatTools *format_tools; BC_Title *new_dimensions; - BC_PopupMenu *scale_factor; - ProxyReset *reset; + ProxyMenu *scale_factor; + ProxyUseScaler *use_scaler; + ProxyAutoScale *auto_scale; }; class ProxyFarm; @@ -148,36 +198,39 @@ class ProxyPackage : public LoadPackage { public: ProxyPackage(); - Asset *orig_asset; + Indexable *orig_idxbl; Asset *proxy_asset; }; class ProxyClient : public LoadClient { public: - ProxyClient(MWindow *mwindow, ProxyThread *thread, - ProxyFarm *server); + ProxyClient(MWindow *mwindow, ProxyRender *proxy_render, ProxyFarm *server); + ~ProxyClient(); void process_package(LoadPackage *package); MWindow *mwindow; - ProxyThread *thread; + ProxyRender *proxy_render; + RenderEngine *render_engine; + CICache *video_cache; + File *src_file; }; class ProxyFarm : public LoadServer { public: - ProxyFarm(MWindow *mwindow, ProxyThread *thread, - ArrayList *proxy_assets, ArrayList *orig_assets); + ProxyFarm(MWindow *mwindow, ProxyRender *proxy_render, + ArrayList *orig_idxbls, ArrayList *proxy_assets); void init_packages(); LoadClient* new_client(); LoadPackage* new_package(); MWindow *mwindow; - ProxyThread *thread; + ProxyRender *proxy_render; + ArrayList *orig_idxbls; ArrayList *proxy_assets; - ArrayList *orig_assets; }; #endif