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