upgrade libvpx+lv2, fix dbl tap play bug, add multi nest/unnest clips, add del top...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / bdcreate.h
1 #ifndef __BDCREATE_H__
2 #define __BDCREATE_H__
3
4 #include "arraylist.h"
5 #include "batchrender.h"
6 #include "bcwindowbase.h"
7 #include "bcbutton.h"
8 #include "bcdialog.h"
9 #include "bclistboxitem.inc"
10 #include "bcmenuitem.h"
11 #include "bctextbox.h"
12 #include "browsebutton.h"
13 #include "mwindow.h"
14 #include "rescale.h"
15
16 #include "bdcreate.inc"
17
18
19 class CreateBD_MenuItem : public BC_MenuItem
20 {
21 public:
22         CreateBD_MenuItem(MWindow *mwindow);
23         int handle_event();
24         MWindow *mwindow;
25 };
26
27 class BD_BatchRenderJob : public BatchRenderJob
28 {
29 public:
30         static int get_udfs_mount(char *udfs, char *mopts, char *mntpt);
31         BD_BatchRenderJob(Preferences *preferences, int labeled, int farmed);
32         char *create_script(EDL *edl, ArrayList<Indexable *> *idxbls);
33 };
34
35
36 class CreateBD_Thread : public BC_DialogThread
37 {
38         static const int64_t BD_SIZE;
39         static const int BD_STREAMS, BD_WIDTH, BD_HEIGHT;
40         static const double BD_ASPECT_WIDTH, BD_ASPECT_HEIGHT;
41         static const double BD_WIDE_ASPECT_WIDTH, BD_WIDE_ASPECT_HEIGHT;
42         static const int BD_MAX_BITRATE, BD_CHANNELS, BD_WIDE_CHANNELS;
43         static const double BD_FRAMERATE, BD_SAMPLERATE, BD_KAUDIO_RATE;
44         static const int BD_INTERLACE_MODE;
45 public:
46         CreateBD_Thread(MWindow *mwindow);
47         ~CreateBD_Thread();
48         void handle_close_event(int result);
49         BC_Window* new_gui();
50         int option_presets();
51         int create_bd_script(const char *path, EDL *edl);
52         int create_bd_jobs(ArrayList<BatchRenderJob*> *jobs, const char *asset_dir);
53         int insert_video_plugin(const char *title, KeyFrame *default_keyframe);
54         int resize_tracks();
55
56         MWindow *mwindow;
57         CreateBD_GUI *gui;
58         char asset_title[BCTEXTLEN];
59         char tmp_path[BCTEXTLEN];
60         int use_deinterlace, use_inverse_telecine;
61         int use_scale, use_resize_tracks;
62         int use_wide_audio, use_farmed;
63         int use_histogram, use_labeled;
64         int use_standard;
65
66         int64_t bd_size;
67         int bd_width;
68         int bd_height;
69         double bd_aspect_width;
70         double bd_aspect_height;
71         double bd_framerate;
72         int bd_samplerate;
73         int bd_max_bitrate;
74         double bd_kaudio_rate;
75         int bd_interlace_mode;
76         int max_w, max_h;
77 };
78
79 class CreateBD_OK : public BC_OKButton
80 {
81 public:
82         CreateBD_OK(CreateBD_GUI *gui, int x, int y);
83         ~CreateBD_OK();
84         int button_press_event();
85         int keypress_event();
86
87         CreateBD_GUI *gui;
88 };
89
90 class CreateBD_Cancel : public BC_CancelButton
91 {
92 public:
93         CreateBD_Cancel(CreateBD_GUI *gui, int x, int y);
94         ~CreateBD_Cancel();
95         int button_press_event();
96
97         CreateBD_GUI *gui;
98 };
99
100
101 class CreateBD_DiskSpace : public BC_Title
102 {
103 public:
104         CreateBD_DiskSpace(CreateBD_GUI *gui, int x, int y);
105         ~CreateBD_DiskSpace();
106         int64_t tmp_path_space();
107         void update();
108
109         CreateBD_GUI *gui;
110 };
111
112 class CreateBD_TmpPath : public BC_TextBox
113 {
114 public:
115         CreateBD_TmpPath(CreateBD_GUI *gui, int x, int y, int w);
116         ~CreateBD_TmpPath();
117         int handle_event();
118
119         CreateBD_GUI *gui;
120 };
121
122
123 class CreateBD_AssetTitle : public BC_TextBox
124 {
125 public:
126         CreateBD_AssetTitle(CreateBD_GUI *gui, int x, int y, int w);
127         ~CreateBD_AssetTitle();
128         int handle_event();
129
130         CreateBD_GUI *gui;
131 };
132
133 class CreateBD_Deinterlace : public BC_CheckBox
134 {
135 public:
136         CreateBD_Deinterlace(CreateBD_GUI *gui, int x, int y);
137         ~CreateBD_Deinterlace();
138         int handle_event();
139
140         CreateBD_GUI *gui;
141 };
142
143 class CreateBD_InverseTelecine : public BC_CheckBox
144 {
145 public:
146         CreateBD_InverseTelecine(CreateBD_GUI *gui, int x, int y);
147         ~CreateBD_InverseTelecine();
148         int handle_event();
149
150         CreateBD_GUI *gui;
151 };
152
153 class CreateBD_ResizeTracks : public BC_CheckBox
154 {
155 public:
156         CreateBD_ResizeTracks(CreateBD_GUI *gui, int x, int y);
157         ~CreateBD_ResizeTracks();
158
159         CreateBD_GUI *gui;
160 };
161
162 class CreateBD_Histogram : public BC_CheckBox
163 {
164 public:
165         CreateBD_Histogram(CreateBD_GUI *gui, int x, int y);
166         ~CreateBD_Histogram();
167
168         CreateBD_GUI *gui;
169 };
170
171 class CreateBD_LabelChapters : public BC_CheckBox
172 {
173 public:
174         CreateBD_LabelChapters(CreateBD_GUI *gui, int x, int y);
175         ~CreateBD_LabelChapters();
176
177         CreateBD_GUI *gui;
178 };
179
180 class CreateBD_UseRenderFarm : public BC_CheckBox
181 {
182 public:
183         CreateBD_UseRenderFarm(CreateBD_GUI *gui, int x, int y);
184         ~CreateBD_UseRenderFarm();
185
186         CreateBD_GUI *gui;
187 };
188
189
190 class CreateBD_WideAudio : public BC_CheckBox
191 {
192 public:
193         CreateBD_WideAudio(CreateBD_GUI *gui, int x, int y);
194         ~CreateBD_WideAudio();
195
196         CreateBD_GUI *gui;
197 };
198
199 class CreateBD_GUI : public BC_Window
200 {
201 public:
202         CreateBD_GUI(CreateBD_Thread *thread,
203                 int x, int y, int w, int h);
204         ~CreateBD_GUI();
205
206         void create_objects();
207         int resize_event(int w, int h);
208         int translation_event();
209         int close_event();
210         void update();
211
212         CreateBD_Thread *thread;
213         int at_x, at_y;
214         CreateBD_AssetTitle *asset_title;
215         int tmp_x, tmp_y;
216         CreateBD_TmpPath *tmp_path;
217         BrowseButton *btmp_path;
218         CreateBD_DiskSpace *disk_space;
219         CreateBD_Format *standard;
220         CreateBD_Scale *scale;
221         ArrayList<BC_ListBoxItem *> media_sizes;
222         CreateBD_MediaSize *media_size;
223         CreateBD_Deinterlace *need_deinterlace;
224         CreateBD_InverseTelecine *need_inverse_telecine;
225         CreateBD_ResizeTracks *need_resize_tracks;
226         CreateBD_Histogram *need_histogram;
227         BC_Title *non_standard;
228         CreateBD_WideAudio *need_wide_audio;
229         CreateBD_LabelChapters *need_labeled;
230         CreateBD_UseRenderFarm *need_farmed;
231         int ok_x, ok_y, ok_w, ok_h;
232         CreateBD_OK *ok;
233         int cancel_x, cancel_y, cancel_w, cancel_h;
234         CreateBD_Cancel *cancel;
235 };
236
237 class CreateBD_FormatItem : public BC_MenuItem
238 {
239 public:
240         int handle_event();
241         CreateBD_FormatItem(CreateBD_Format *popup, int standard, const char *name);
242         ~CreateBD_FormatItem();
243
244         CreateBD_Format *popup;
245         int standard;
246 };
247
248 class CreateBD_Format : public BC_PopupMenu
249 {
250 public:
251         void create_objects();
252         int handle_event();
253         CreateBD_Format(CreateBD_GUI *gui, int x, int y);
254         ~CreateBD_Format();
255         void set_value(int v) { set_text(get_item(v)->get_text()); }
256
257         CreateBD_GUI *gui;
258 };
259
260 class CreateBD_ScaleItem : public BC_MenuItem
261 {
262 public:
263         int handle_event();
264         CreateBD_ScaleItem(CreateBD_Scale *popup, int scale, const char *text);
265         ~CreateBD_ScaleItem();
266
267         CreateBD_Scale *popup;
268         int scale;
269 };
270
271 class CreateBD_Scale : public BC_PopupMenu
272 {
273 public:
274         void create_objects();
275         int handle_event();
276         CreateBD_Scale(CreateBD_GUI *gui, int x, int y);
277         ~CreateBD_Scale();
278
279         CreateBD_GUI *gui;
280         void set_value(int v) { set_text(Rescale::scale_types[v]); }
281 };
282
283 class CreateBD_MediaSize : public BC_PopupTextBox
284 {
285 public:
286         CreateBD_MediaSize(CreateBD_GUI *gui, int x, int y);
287         ~CreateBD_MediaSize();
288         int handle_event();
289
290         CreateBD_GUI *gui;
291 };
292
293 #endif