5 #include "condition.inc"
6 #include "virtualconsole.inc"
9 #include "renderengine.inc"
15 class CommonRender
: public Thread
18 CommonRender(RenderEngine
*renderengine
);
19 virtual ~CommonRender();
21 virtual void arm_command();
22 virtual int get_total_tracks() { return 0; };
23 virtual Module
* new_module(Track
*track
) { return 0; };
24 void delete_vconsole();
25 void create_modules();
26 void reset_parameters();
27 // Build the virtual console at the current position
28 virtual void build_virtual_console();
29 virtual VirtualConsole
* new_vconsole_object() { return 0; };
30 virtual void init_output_buffers() {};
32 int test_reconfigure(int64_t position
, int64_t &length
);
34 void evaluate_current_position();
36 virtual int restart_playback();
39 RenderEngine
*renderengine
;
41 VirtualConsole
*vconsole
;
42 // Native units position in project used for all functions
43 int64_t current_position
;
44 Condition
*start_lock
;
45 // flag for normally completed playback
47 // Flag for interrupted playback
49 // flag for last buffer to be played back
51 // if this media type is being rendered asynchronously by threads
53 // Module for every track to dispatch plugins in whether the track is
55 // Maintain module structures here instead of reusing the EDL so
56 // plugins persist if the EDL is replaced.
57 // Modules can persist after vconsole is restarted.
61 // If a VirtualConsole was created need to start plugins
71 CommonRender(MWindow
*mwindow
, RenderEngine
*renderengine
);
74 int virtual stop_rendering() {};
75 int wait_for_completion();
76 virtual int wait_device_completion() {};
77 // renders to a device when there's a device
78 virtual int process_buffer(int64_t input_len
, int64_t input_position
) {};
80 virtual int get_datatype() {};
81 // test region against loop boundaries
82 int get_boundaries(int64_t ¤t_render_length
);
83 // test region for playback automation changes
84 int get_automation(int64_t ¤t_render_length
, int data_type
);
85 // advance the buffer position depending on the loop status
86 int advance_position(int64_t current_render_length
);
88 // convert to and from the native units of the render engine
89 virtual int64_t tounits(double position
, int round
);
90 virtual double fromunits(int64_t position
);
91 virtual int64_t get_render_length(int64_t current_render_length
) {};
95 int64_t input_length
; // frames/samples to read from disk at a time
98 // make sure automation agrees with playable tracks
99 // automatically tests direction of playback
100 // return 1 if it doesn't
101 int test_automation_before(int64_t ¤t_render_length
, int data_type
);
102 int test_automation_after(int64_t ¤t_render_length
, int data_type
);