793ba513562aaa189afe8f443e13cf877c96c968
[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         int tsmuxered;
34 };
35
36
37 class CreateBD_Thread : public BC_DialogThread
38 {
39         static const int64_t BD_SIZE;
40         static const int BD_STREAMS, BD_WIDTH, BD_HEIGHT;
41         static const double BD_ASPECT_WIDTH, BD_ASPECT_HEIGHT;
42         static const double BD_WIDE_ASPECT_WIDTH, BD_WIDE_ASPECT_HEIGHT;
43         static const int BD_MAX_BITRATE, BD_CHANNELS, BD_WIDE_CHANNELS;
44         static const double BD_FRAMERATE, BD_SAMPLERATE, BD_KAUDIO_RATE;
45         static const int BD_INTERLACE_MODE;
46 public:
47         CreateBD_Thread(MWindow *mwindow);
48         ~CreateBD_Thread();
49         void handle_close_event(int result);
50         BC_Window* new_gui();
51         int option_presets();
52         int create_bd_script(const char *path, EDL *edl);
53         int create_bd_jobs(ArrayList<BatchRenderJob*> *jobs, const char *asset_dir);
54         int insert_video_plugin(const char *title, KeyFrame *default_keyframe);
55         int resize_tracks();
56
57         MWindow *mwindow;
58         CreateBD_GUI *gui;
59         char asset_title[BCTEXTLEN];
60         char tmp_path[BCTEXTLEN];
61         char use_profile[BCTEXTLEN];
62         int use_deinterlace, use_inverse_telecine;
63         int use_scale, use_resize_tracks;
64         int use_wide_audio, use_farmed;
65         int use_histogram, use_labeled;
66         int use_standard;
67         int use_tsmuxer;
68
69         int64_t bd_size;
70         int bd_width;
71         int bd_height;
72         double bd_aspect_width;
73         double bd_aspect_height;
74         double bd_framerate;
75         int bd_samplerate;
76         int bd_max_bitrate;
77         double bd_kaudio_rate;
78         int bd_interlace_mode;
79         int max_w, max_h;
80
81         BD_BatchRenderJob *batchrender;
82 };
83
84 class CreateBD_OK : public BC_OKButton
85 {
86 public:
87         CreateBD_OK(CreateBD_GUI *gui, int x, int y);
88         ~CreateBD_OK();
89         int button_press_event();
90         int keypress_event();
91
92         CreateBD_GUI *gui;
93 };
94
95 class CreateBD_Cancel : public BC_CancelButton
96 {
97 public:
98         CreateBD_Cancel(CreateBD_GUI *gui, int x, int y);
99         ~CreateBD_Cancel();
100         int button_press_event();
101
102         CreateBD_GUI *gui;
103 };
104
105
106 class CreateBD_DiskSpace : public BC_Title
107 {
108 public:
109         CreateBD_DiskSpace(CreateBD_GUI *gui, int x, int y);
110         ~CreateBD_DiskSpace();
111         int64_t tmp_path_space();
112         void update();
113
114         CreateBD_GUI *gui;
115 };
116
117 class CreateBD_TmpPath : public BC_TextBox
118 {
119 public:
120         CreateBD_TmpPath(CreateBD_GUI *gui, int x, int y, int w);
121         ~CreateBD_TmpPath();
122         int handle_event();
123
124         CreateBD_GUI *gui;
125 };
126
127
128 class CreateBD_AssetTitle : public BC_TextBox
129 {
130 public:
131         CreateBD_AssetTitle(CreateBD_GUI *gui, int x, int y, int w);
132         ~CreateBD_AssetTitle();
133         int handle_event();
134
135         CreateBD_GUI *gui;
136 };
137
138 class CreateBD_Deinterlace : public BC_CheckBox
139 {
140 public:
141         CreateBD_Deinterlace(CreateBD_GUI *gui, int x, int y);
142         ~CreateBD_Deinterlace();
143         int handle_event();
144
145         CreateBD_GUI *gui;
146 };
147
148 class CreateBD_InverseTelecine : public BC_CheckBox
149 {
150 public:
151         CreateBD_InverseTelecine(CreateBD_GUI *gui, int x, int y);
152         ~CreateBD_InverseTelecine();
153         int handle_event();
154
155         CreateBD_GUI *gui;
156 };
157
158 class CreateBD_ResizeTracks : public BC_CheckBox
159 {
160 public:
161         CreateBD_ResizeTracks(CreateBD_GUI *gui, int x, int y);
162         ~CreateBD_ResizeTracks();
163
164         CreateBD_GUI *gui;
165 };
166
167 class CreateBD_Histogram : public BC_CheckBox
168 {
169 public:
170         CreateBD_Histogram(CreateBD_GUI *gui, int x, int y);
171         ~CreateBD_Histogram();
172
173         CreateBD_GUI *gui;
174 };
175
176 class CreateBD_LabelChapters : public BC_CheckBox
177 {
178 public:
179         CreateBD_LabelChapters(CreateBD_GUI *gui, int x, int y);
180         ~CreateBD_LabelChapters();
181
182         CreateBD_GUI *gui;
183 };
184
185 class CreateBD_UseRenderFarm : public BC_CheckBox
186 {
187 public:
188         CreateBD_UseRenderFarm(CreateBD_GUI *gui, int x, int y);
189         ~CreateBD_UseRenderFarm();
190
191         CreateBD_GUI *gui;
192 };
193
194
195 class CreateBD_WideAudio : public BC_CheckBox
196 {
197 public:
198         CreateBD_WideAudio(CreateBD_GUI *gui, int x, int y);
199         ~CreateBD_WideAudio();
200
201         CreateBD_GUI *gui;
202 };
203
204
205 class CreateBD_UseTsmuxer : public BC_CheckBox
206 {
207 public:
208         CreateBD_UseTsmuxer(CreateBD_GUI *gui, int x, int y);
209         ~CreateBD_UseTsmuxer();
210
211         CreateBD_GUI *gui;
212 };
213
214
215 class CreateBD_GUI : public BC_Window
216 {
217 public:
218         CreateBD_GUI(CreateBD_Thread *thread,
219                 int x, int y, int w, int h);
220         ~CreateBD_GUI();
221
222         void create_objects();
223         int resize_event(int w, int h);
224         int translation_event();
225         int close_event();
226         void update();
227
228         CreateBD_Thread *thread;
229         int at_x, at_y;
230         CreateBD_AssetTitle *asset_title;
231         int tmp_x, tmp_y;
232         CreateBD_TmpPath *tmp_path;
233         BrowseButton *btmp_path;
234         CreateBD_DiskSpace *disk_space;
235         CreateBD_Format *standard;
236         CreateBD_Scale *scale;
237         ArrayList<BC_ListBoxItem *> media_sizes;
238         CreateBD_MediaSize *media_size;
239         CreateBD_Deinterlace *need_deinterlace;
240         CreateBD_InverseTelecine *need_inverse_telecine;
241         CreateBD_ResizeTracks *need_resize_tracks;
242         CreateBD_Histogram *need_histogram;
243         CreateBD_UseTsmuxer *need_tsmuxer;
244         BC_Title *non_standard;
245         CreateBD_WideAudio *need_wide_audio;
246         CreateBD_LabelChapters *need_labeled;
247         CreateBD_UseRenderFarm *need_farmed;
248         int ok_x, ok_y, ok_w, ok_h;
249         CreateBD_OK *ok;
250         int cancel_x, cancel_y, cancel_w, cancel_h;
251         CreateBD_Cancel *cancel;
252         ArrayList<BC_ListBoxItem *> profiles;
253         CreateBD_Profile *profile;
254 };
255
256 class CreateBD_FormatItem : public BC_MenuItem
257 {
258 public:
259         int handle_event();
260         CreateBD_FormatItem(CreateBD_Format *popup, int standard, const char *name);
261         ~CreateBD_FormatItem();
262
263         CreateBD_Format *popup;
264         int standard;
265 };
266
267 class CreateBD_Format : public BC_PopupMenu
268 {
269 public:
270         void create_objects();
271         int handle_event();
272         CreateBD_Format(CreateBD_GUI *gui, int x, int y);
273         ~CreateBD_Format();
274         void set_value(int v) { set_text(get_item(v)->get_text()); }
275
276         CreateBD_GUI *gui;
277 };
278
279 class CreateBD_ScaleItem : public BC_MenuItem
280 {
281 public:
282         int handle_event();
283         CreateBD_ScaleItem(CreateBD_Scale *popup, int scale, const char *text);
284         ~CreateBD_ScaleItem();
285
286         CreateBD_Scale *popup;
287         int scale;
288 };
289
290 class CreateBD_Scale : public BC_PopupMenu
291 {
292 public:
293         void create_objects();
294         int handle_event();
295         CreateBD_Scale(CreateBD_GUI *gui, int x, int y);
296         ~CreateBD_Scale();
297
298         CreateBD_GUI *gui;
299         void set_value(int v) { set_text(Rescale::scale_types[v]); }
300 };
301
302 class CreateBD_MediaSize : public BC_PopupTextBox
303 {
304 public:
305         CreateBD_MediaSize(CreateBD_GUI *gui, int x, int y);
306         ~CreateBD_MediaSize();
307         int handle_event();
308
309         CreateBD_GUI *gui;
310 };
311
312 class CreateBD_Profile : public BC_PopupTextBox
313 {
314 public:
315         CreateBD_Profile(CreateBD_GUI *gui, int x, int y);
316         ~CreateBD_Profile();
317         int handle_event();
318
319         CreateBD_GUI *gui;
320 };
321
322
323 #endif