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