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() {};
33 int test_reconfigure(int64_t position
, int64_t &length
);
35 void evaluate_current_position();
37 virtual int restart_playback();
40 RenderEngine
*renderengine
;
42 VirtualConsole
*vconsole
;
43 // Native units position in project used for all functions
44 int64_t current_position
;
45 Condition
*start_lock
;
46 // flag for normally completed playback
48 // Flag for interrupted playback
50 // flag for last buffer to be played back
52 // if this media type is being rendered asynchronously by threads
54 // Module for every track to dispatch plugins in whether the track is
56 // Maintain module structures here instead of reusing the EDL so
57 // plugins persist if the EDL is replaced.
58 // Modules can persist after vconsole is restarted.
62 // If a VirtualConsole was created need to start plugins
72 CommonRender(MWindow
*mwindow
, RenderEngine
*renderengine
);
75 int virtual stop_rendering() {};
76 int wait_for_completion();
77 virtual int wait_device_completion() {};
78 // renders to a device when there's a device
79 virtual int process_buffer(int64_t input_len
, int64_t input_position
) {};
81 virtual int get_datatype() {};
82 // test region against loop boundaries
83 int get_boundaries(int64_t ¤t_render_length
);
84 // test region for playback automation changes
85 int get_automation(int64_t ¤t_render_length
, int data_type
);
86 // advance the buffer position depending on the loop status
87 int advance_position(int64_t current_render_length
);
89 // convert to and from the native units of the render engine
90 virtual int64_t tounits(double position
, int round
);
91 virtual double fromunits(int64_t position
);
92 virtual int64_t get_render_length(int64_t current_render_length
) {};
96 int64_t input_length
; // frames/samples to read from disk at a time
99 // make sure automation agrees with playable tracks
100 // automatically tests direction of playback
101 // return 1 if it doesn't
102 int test_automation_before(int64_t ¤t_render_length
, int data_type
);
103 int test_automation_after(int64_t ¤t_render_length
, int data_type
);