+++ /dev/null
-
-/*
- * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef VIRTUALANODE_H
-#define VIRTUALANODE_H
-
-
-#include "arender.inc"
-#include "filethread.inc" // RING_BUFFERS
-#include "maxchannels.h"
-#include "plugin.inc"
-#include "samples.inc"
-#include "units.h"
-#include "virtualnode.h"
-
-class VirtualANode : public VirtualNode
-{
-public:
- VirtualANode(RenderEngine *renderengine,
- VirtualConsole *vconsole,
- Module *real_module,
- Plugin *real_plugin,
- Track *track,
- VirtualNode *parent_module);
-
- ~VirtualANode();
-
- VirtualNode* create_module(Plugin *real_plugin,
- Module *real_module,
- Track *track);
- VirtualNode* create_plugin(Plugin *real_plugin);
-
-// Called by VirtualAConsole::process_buffer to process exit_nodes.
-// read_data recurses down the tree.
- int render(Samples *output_temp,
- int64_t size,
- int64_t start_position,
- int64_t sample_rate);
-
-// Read data from whatever comes before this node.
-// Calls render in either the parent node or the module for the track.
- int read_data(Samples *output_temp,
- int64_t size,
- int64_t start_position,
- int64_t sample_rate);
-
-private:
-// need *arender for peak updating
- int render_as_module(Samples **audio_out,
- Samples *output_temp,
- int64_t size,
- int64_t start_position,
- int64_t sample_rate);
- void render_as_plugin(Samples *output_temp,
- int64_t size,
- int64_t start_position,
- int64_t sample_rate);
-
- int render_fade(double *buffer,
- int64_t len,
- int64_t input_position,
- int64_t sample_rate,
- Autos *autos,
- int direction,
- int use_nudge);
- int render_pan(double *input, // start of input fragment
- double *output, // start of output fragment
- int64_t fragment_len, // fragment length in input scale
- int64_t input_position, // starting sample of input buffer in project
- int64_t sample_rate,
- Autos *autos,
- int channel,
- int direction,
- int use_nudge);
- void get_pan_automation(double &slope,
- double &intercept,
- int64_t input_position,
- int64_t &slope_len,
- Autos *autos,
- int channel,
- int direction);
-
-/*
- * double* get_module_input(int double_buffer, int64_t fragment_position);
- * double* get_module_output(int double_buffer, int64_t fragment_position);
- */
-
- DB db;
-
- Auto *pan_before[MAXCHANNELS], *pan_after[MAXCHANNELS];
-};
-
-
-#endif