00001 #ifndef ATTACHMENTPOINT_H 00002 #define ATTACHMENTPOINT_H 00003 00004 #include "arraylist.h" 00005 #include "filexml.inc" 00006 #include "floatauto.inc" 00007 #include "floatautos.inc" 00008 #include "mwindow.inc" 00009 #include "messages.inc" 00010 #include "plugin.inc" 00011 #include "pluginserver.inc" 00012 #include "renderengine.inc" 00013 #include "sharedlocation.h" 00014 #include "vframe.inc" 00015 #include "virtualnode.inc" 00016 00017 #include <stdint.h> 00018 00019 // Attachment points for Modules to attach plugins 00020 class AttachmentPoint 00021 { 00022 public: 00023 AttachmentPoint(RenderEngine *renderengine, 00024 Plugin *plugin, 00025 int data_type); 00026 virtual ~AttachmentPoint(); 00027 00028 virtual int reset_parameters(); 00029 // Used by Module::swap_attachments before virtual console expansion. 00030 // Return 1 if the plugin id is the same 00031 int identical(AttachmentPoint *old); 00032 00033 // Move new_virtual_plugins to virtual_plugins. 00034 // Called after virtual console expansion. 00035 int render_init(); 00036 00037 // Called before every buffer processing 00038 void reset_status(); 00039 00040 // Attach a virtual plugin for realtime playback. Returns the number 00041 // of the buffer assigned to a multichannel plugin. 00042 int attach_virtual_plugin(VirtualNode *virtual_plugin); 00043 virtual void delete_buffer_vector() {}; 00044 00045 // return 0 if ready to render 00046 // check all the virtual plugins for waiting status 00047 // all virtual plugins attached to this must be waiting for a render 00048 // int sort(VirtualNode *virtual_plugin); 00049 // Called by plugin server to render GUI with data. 00050 void render_gui(void *data); 00051 void render_gui(void *data, int size); 00052 virtual int get_buffer_size() { return 0; }; 00053 00054 // For unshared plugins, virtual plugins to send configuration events to and 00055 // read data from. 00056 // For shared plugins, virtual plugins to allocate buffers for and read 00057 // data from. 00058 ArrayList<VirtualNode*> virtual_plugins; 00059 00060 // List for a new virtual console which is transferred to virtual_plugins after 00061 // virtual console expansion. 00062 ArrayList<VirtualNode*> new_virtual_plugins; 00063 00064 // Plugin servers to do signal processing 00065 ArrayList<PluginServer*> plugin_servers; 00066 00067 // renderengine Plugindb entry 00068 PluginServer *plugin_server; 00069 // Pointer to the plugin object in EDL 00070 Plugin *plugin; 00071 // ID of plugin object in EDL 00072 int plugin_id; 00073 RenderEngine *renderengine; 00074 // Current input buffer being loaded. Determines when the plugin server is run 00075 // int current_buffer; 00076 00077 // Status of last buffer processed. 00078 // Used in shared multichannel plugin to tell of it's already been processed 00079 // or needs to be processed again for a different target. 00080 // start_position is the end of the range if playing in reverse. 00081 int64_t start_position; 00082 int64_t len; 00083 int64_t sample_rate; 00084 double frame_rate; 00085 int is_processed; 00086 int data_type; 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 int multichannel_shared(int search_new); 00099 int singlechannel(); 00100 00101 // Simply deletes the virtual plugin 00102 int render_stop(int duplicate); 00103 00104 00105 int dump(); 00106 00107 }; 00108 00109 #endif
1.4.4