fixes for checkin 2 times ago
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / edlsession.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008-2015 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef EDLSESSION_H
23 #define EDLSESSION_H
24
25 #include "asset.inc"
26 #include "autoconf.inc"
27 #include "bcwindowbase.inc"
28 #include "bchash.inc"
29 #include "edl.inc"
30 #include "filexml.inc"
31 #include "maxchannels.h"
32 #include "playbackconfig.inc"
33 #include "recordconfig.inc"
34
35
36 // Session shared between all clips
37
38
39 class EDLSession
40 {
41 public:
42         EDLSession(EDL *edl);
43         ~EDLSession();
44
45         int load_xml(FileXML *xml, int append_mode, uint32_t load_flags);
46         int save_xml(FileXML *xml);
47         int copy(EDLSession *session);
48         int load_audio_config(FileXML *file, int append_mode, uint32_t load_flags);
49         int save_audio_config(FileXML *xml);
50         int load_video_config(FileXML *file, int append_mode, uint32_t load_flags);
51         int save_video_config(FileXML *xml);
52         int load_defaults(BC_Hash *defaults);
53         int save_defaults(BC_Hash *defaults);
54         void boundaries();
55
56 //      PlaybackConfig* get_playback_config(int strategy, int head);
57 //      ArrayList<PlaybackConfig*>* get_playback_config(int strategy);
58 //      int get_playback_heads(int strategy);
59
60 // Called by PreferencesThread to determine if preference changes need to be
61 // rendered.
62         int need_rerender(EDLSession *ptr);
63 // Called by BRender to determine if any background rendered frames are valid.
64         void equivalent_output(EDLSession *session, double *result);
65         void dump();
66
67 // Audio
68         int achannel_positions[MAXCHANNELS];
69 // AWindow format
70         int assetlist_format;
71 // AWindow column widths
72         int asset_columns[ASSET_COLUMNS];
73         AutoConf *auto_conf;
74 // Aspect ratio for video
75         float aspect_w;
76         float aspect_h;
77         int audio_channels;
78         int audio_tracks;
79 // automation follows edits during editing
80         int autos_follow_edits;
81 // Generate keyframes for every tweek
82         int auto_keyframes;
83 // use spanning parameter update
84         int span_keyframes;
85 // Where to do background rendering
86         double brender_start;
87         double brender_end;
88 // Length of clipboard if pasting
89         double clipboard_length;
90 // Colormodel for intermediate frames
91         int color_model;
92 // Interlace Mode for entire project
93         int interlace_mode;
94 // Coords for cropping operation
95         int crop_x1, crop_x2, crop_y1, crop_y2;
96 // radius of eyedropper
97         int eyedrop_radius;
98         float ruler_x1, ruler_y1;
99         float ruler_x2, ruler_y2;
100 // Ruler points relative to the output frame.
101 // Current folder in resource window
102         int awindow_folder;
103 // align cursor on frame boundaries
104         int cursor_on_frames;
105 // paste keyframes to any track type
106         int typeless_keyframes;
107 // Destination item for CWindow
108         int cwindow_dest;
109 // Current submask being edited in CWindow
110         int cwindow_mask;
111 // Use the cwindow or not
112         int cwindow_meter;
113 // CWindow tool currently selected
114         int cwindow_operation;
115 // Use scrollbars in the CWindow
116         int cwindow_scrollbars;
117 // Scrollbar positions
118         int cwindow_xscroll;
119         int cwindow_yscroll;
120         float cwindow_zoom;
121         int cwindow_click2play;
122 // CWindow clear color
123         int cwindow_clear_color;
124 // Transition
125         char default_atransition[BCTEXTLEN];
126         char default_vtransition[BCTEXTLEN];
127 // Length in seconds
128         double default_transition_length;
129 // Edit mode to use for each mouse button
130         int edit_handle_mode[3];
131 // Editing mode
132         int editing_mode;
133         EDL *edl;
134         int enable_duplex;
135 // AWindow format
136         int folderlist_format;
137         double frame_rate;
138         float frames_per_foot;
139 // Number of highlighted track
140         int highlighted_track;
141 // Enumeration for how to scale from edl.inc.
142         int interpolation_type;
143 // Whether to interpolate CR2 images
144         int interpolate_raw;
145 // Whether to white balance CR2 images
146         int white_balance_raw;
147 // labels follow edits during editing
148         int labels_follow_edits;
149         int plugins_follow_edits;
150 // For main menu plugin attaching,
151 // // attach 1 standalone on the first track and share it with other tracks
152         int single_standalone;
153         int meter_format;
154         int min_meter_db;
155         int max_meter_db;
156         int output_w;
157         int output_h;
158         int64_t playback_buffer;
159         int playback_cursor_visible;
160         int64_t playback_preload;
161         int decode_subtitles;
162         int subtitle_number;
163         int label_cells;
164         int program_no;
165         int playback_software_position;
166 // current settings are scaled this much from the original settings
167         int proxy_scale, proxy_state;
168 // original proxy_scale when proxy_enable disables/enables proxy
169         int proxy_disabled_scale;
170 // upscale geom from proxy to session on read in
171         int proxy_use_scaler;
172 // automatically rescale assets when loaded
173         int proxy_auto_scale;
174 // beep gain when proxy/render done
175         float proxy_beep, render_beep;
176 //      int playback_strategy;
177 // Play audio in realtime priority
178         int real_time_playback;
179         int real_time_record;
180 // Use record positioning selection
181         int record_positioning;
182 // Record undecoded stream data
183         int record_raw_stream;
184 // Sync the drives during recording
185         int record_sync_drives;
186 // Speed of meters when recording
187         int record_speed;
188 // Samples to read from device at a time
189         int record_fragment_size;
190 // Samples to write to disk at a time
191         int64_t record_write_length;
192 // Realtime TOC generation for DVB mpeg recording
193         int record_realtime_toc;
194 // Show title and action safe regions in CWindow
195         int safe_regions;
196         int64_t sample_rate;
197         float scrub_speed;
198 // Load files as a duration
199         int si_useduration;
200         float si_duration;
201 // Show assets in track canvas
202         int show_assets;
203 // Show titles in resources
204         int show_titles;
205 // Test for data before rendering a track
206         int test_playback_edits;
207 // Format to display times in
208         int time_format;
209 // Offset for timecode units
210         double timecode_offset;
211 // Format to display nudge in, either seconds or track units.
212         int nudge_format;
213 // Show tool window in CWindow
214         int tool_window;
215 // Location of video outs
216         int vchannel_x[MAXCHANNELS];
217         int vchannel_y[MAXCHANNELS];
218 // Recording
219         int video_channels;
220         VideoInConfig *vconfig_in;
221         AudioInConfig *aconfig_in;
222         Asset *recording_format;
223 // play every frame
224         int video_every_frame;
225 // decode video asynchronously
226 //      int video_asynchronous;
227         int video_tracks;
228 // number of frames to write to disk at a time during video recording.
229         int video_write_length;
230         int view_follows_playback;
231 // Use the vwindow meter or not
232         int vwindow_meter;
233         float vwindow_zoom;
234         int vwindow_click2play;
235
236 // Global ID counter
237         static int current_id;
238         PlaybackConfig* playback_config;
239
240 private:
241 // Global playback.  This is loaded from defaults but not from XML probably
242 // because it was discovered to be the most convenient.
243 // It is part of the EDL probably because the playback setting was
244 // going to be bound to the EDL.
245 //      ArrayList<PlaybackConfig*> playback_config[PLAYBACK_STRATEGIES];
246 };
247
248
249 #endif