add bluray dv, misc fixes
[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         static void get_udfs_mount(char *udfs, char *mopts, char *mntpt);
38 public:
39         CreateBD_Thread(MWindow *mwindow);
40         ~CreateBD_Thread();
41         void handle_close_event(int result);
42         BC_Window* new_gui();
43         int option_presets();
44         int create_bd_jobs(ArrayList<BatchRenderJob*> *jobs, const char *asset_dir);
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         int handle_event();
121
122         CreateBD_GUI *gui;
123 };
124
125 class CreateBD_Deinterlace : public BC_CheckBox
126 {
127 public:
128         CreateBD_Deinterlace(CreateBD_GUI *gui, int x, int y);
129         ~CreateBD_Deinterlace();
130         int handle_event();
131
132         CreateBD_GUI *gui;
133 };
134
135 class CreateBD_InverseTelecine : public BC_CheckBox
136 {
137 public:
138         CreateBD_InverseTelecine(CreateBD_GUI *gui, int x, int y);
139         ~CreateBD_InverseTelecine();
140         int handle_event();
141
142         CreateBD_GUI *gui;
143 };
144
145 class CreateBD_ResizeTracks : public BC_CheckBox
146 {
147 public:
148         CreateBD_ResizeTracks(CreateBD_GUI *gui, int x, int y);
149         ~CreateBD_ResizeTracks();
150
151         CreateBD_GUI *gui;
152 };
153
154 class CreateBD_Histogram : public BC_CheckBox
155 {
156 public:
157         CreateBD_Histogram(CreateBD_GUI *gui, int x, int y);
158         ~CreateBD_Histogram();
159
160         CreateBD_GUI *gui;
161 };
162
163 class CreateBD_LabelChapters : public BC_CheckBox
164 {
165 public:
166         CreateBD_LabelChapters(CreateBD_GUI *gui, int x, int y);
167         ~CreateBD_LabelChapters();
168
169         CreateBD_GUI *gui;
170 };
171
172 class CreateBD_WideAudio : public BC_CheckBox
173 {
174 public:
175         CreateBD_WideAudio(CreateBD_GUI *gui, int x, int y);
176         ~CreateBD_WideAudio();
177
178         CreateBD_GUI *gui;
179 };
180
181 class CreateBD_GUI : public BC_Window
182 {
183 public:
184         CreateBD_GUI(CreateBD_Thread *thread,
185                 int x, int y, int w, int h);
186         ~CreateBD_GUI();
187
188         void create_objects();
189         int resize_event(int w, int h);
190         int translation_event();
191         int close_event();
192         void update();
193
194         CreateBD_Thread *thread;
195         int at_x, at_y;
196         CreateBD_AssetTitle *asset_title;
197         int tmp_x, tmp_y;
198         CreateBD_TmpPath *tmp_path;
199         BrowseButton *btmp_path;
200         CreateBD_DiskSpace *disk_space;
201         CreateBD_Format *standard;
202         CreateBD_Scale *scale;
203         ArrayList<BC_ListBoxItem *> media_sizes;
204         CreateBD_MediaSize *media_size;
205         CreateBD_Deinterlace *need_deinterlace;
206         CreateBD_InverseTelecine *need_inverse_telecine;
207         CreateBD_ResizeTracks *need_resize_tracks;
208         CreateBD_Histogram *need_histogram;
209         BC_Title *non_standard;
210         CreateBD_WideAudio *need_wide_audio;
211         CreateBD_LabelChapters *need_label_chapters;
212         int ok_x, ok_y, ok_w, ok_h;
213         CreateBD_OK *ok;
214         int cancel_x, cancel_y, cancel_w, cancel_h;
215         CreateBD_Cancel *cancel;
216 };
217
218 class CreateBD_FormatItem : public BC_MenuItem
219 {
220 public:
221         int handle_event();
222         CreateBD_FormatItem(CreateBD_Format *popup, int standard, const char *name);
223         ~CreateBD_FormatItem();
224
225         CreateBD_Format *popup;
226         int standard;
227 };
228
229 class CreateBD_Format : public BC_PopupMenu
230 {
231 public:
232         void create_objects();
233         int handle_event();
234         CreateBD_Format(CreateBD_GUI *gui, int x, int y);
235         ~CreateBD_Format();
236         void set_value(int v) { set_text(get_item(v)->get_text()); }
237
238         CreateBD_GUI *gui;
239 };
240
241 class CreateBD_ScaleItem : public BC_MenuItem
242 {
243 public:
244         int handle_event();
245         CreateBD_ScaleItem(CreateBD_Scale *popup, int scale, const char *text);
246         ~CreateBD_ScaleItem();
247
248         CreateBD_Scale *popup;
249         int scale;
250 };
251
252 class CreateBD_Scale : public BC_PopupMenu
253 {
254 public:
255         void create_objects();
256         int handle_event();
257         CreateBD_Scale(CreateBD_GUI *gui, int x, int y);
258         ~CreateBD_Scale();
259
260         CreateBD_GUI *gui;
261         void set_value(int v) { set_text(Rescale::scale_types[v]); }
262 };
263
264 class CreateBD_MediaSize : public BC_PopupTextBox
265 {
266 public:
267         CreateBD_MediaSize(CreateBD_GUI *gui, int x, int y);
268         ~CreateBD_MediaSize();
269         int handle_event();
270
271         CreateBD_GUI *gui;
272 };
273
274 #endif