r370: Heroine Virutal's official release 1.2.1
[cinelerra_cv/mob.git] / hvirtual / cinelerra / packagerenderer.h
blob5f001e61c6eef84fd968357f2e5db33ba806ad29
1 #ifndef PACKAGERENDERER_H
2 #define PACKAGERENDERER_H
5 #include "assets.inc"
6 #include "bcwindowbase.inc"
7 #include "cache.inc"
8 #include "edit.inc"
9 #include "edl.inc"
10 #include "file.inc"
11 #include "maxchannels.h"
12 #include "mwindow.inc"
13 #include "playabletracks.inc"
14 #include "playbackconfig.inc"
15 #include "pluginserver.inc"
16 #include "preferences.inc"
17 #include "renderengine.inc"
18 #include "track.inc"
19 #include "transportque.inc"
20 #include "vframe.inc"
21 #include "videodevice.inc"
24 #include <stdint.h>
26 class RenderPackage
28 public:
29 RenderPackage();
30 ~RenderPackage();
32 // Path of output without remote prefix
33 char path[BCTEXTLEN];
35 // Range not including preroll
36 int64_t audio_start;
37 int64_t audio_end;
38 int64_t video_start;
39 int64_t video_end;
40 int done;
41 int use_brender;
47 // Used by Render and BRender to do packages.
48 class PackageRenderer
50 public:
51 PackageRenderer();
52 ~PackageRenderer();
54 // Initialize stuff which is reused between packages
55 int initialize(MWindow *mwindow,
56 EDL *edl,
57 Preferences *preferences,
58 Asset *default_asset,
59 ArrayList<PluginServer*> *plugindb);
61 // Aborts and returns 1 if an error is encountered.
62 int render_package(RenderPackage *package);
64 int direct_copy_possible(EDL *edl,
65 int64_t current_position,
66 Track* playable_track, // The one track which is playable
67 Edit* &playable_edit, // The edit which is playing
68 File *file); // Output file
69 int direct_frame_copy(EDL *edl,
70 int64_t &video_position,
71 File *file,
72 int &result);
74 // Get result status from server
75 virtual int get_result();
76 virtual void set_result(int value);
77 virtual void set_progress(int64_t total_samples);
78 // Used by background rendering
79 virtual void set_video_map(int64_t position, int value);
80 virtual int progress_cancelled();
82 void create_output();
83 void create_engine();
84 void do_audio();
85 void do_video();
86 void stop_engine();
87 void stop_output();
88 void close_output();
91 // Passed in from outside
92 EDL *edl;
93 Preferences *preferences;
94 Asset *default_asset;
95 ArrayList<PluginServer*> *plugindb;
97 // Created locally
98 Asset *asset;
99 double **audio_output;
100 int64_t audio_position;
101 int64_t audio_preroll;
102 int64_t audio_read_length;
103 File *file;
104 int result;
105 VFrame ***video_output;
106 // A nonzero mwindow signals master render engine to the engine.
107 // A zero mwindow signals client or non interactive.
108 MWindow *mwindow;
109 double *audio_output_ptr[MAX_CHANNELS];
110 CICache *audio_cache;
111 CICache *video_cache;
112 VFrame *compressed_output;
113 AudioOutConfig *aconfig;
114 VideoOutConfig *vconfig;
115 // PlaybackConfig *playback_config;
116 PlayableTracks *playable_tracks;
117 RenderEngine *render_engine;
118 RenderPackage *package;
119 TransportCommand *command;
120 int direct_frame_copying;
121 VideoDevice *video_device;
122 VFrame *video_output_ptr[MAX_CHANNELS];
123 int64_t video_preroll;
124 int64_t video_position;
125 int64_t video_read_length;
126 int64_t video_write_length;
127 int64_t video_write_position;
133 #endif