diff options
Diffstat (limited to 'rotord/src/graph.cpp')
| -rw-r--r-- | rotord/src/graph.cpp | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/rotord/src/graph.cpp b/rotord/src/graph.cpp index 7afb92e..f26db6a 100644 --- a/rotord/src/graph.cpp +++ b/rotord/src/graph.cpp @@ -24,23 +24,30 @@ Node* Graph::find_node(const string &type){ } return nullptr; //can be tested against }; -bool Graph::signal_render(xmlIO &XML,const float framerate) { - if (find_node("signal_output")) { - Signal_output *signal_output=dynamic_cast<Signal_output*>(find_node("signal_output")); - //return signal_output->render(duration,framerate,signal_xml); - float sig=0.0f; - string val=""; - for (float i=0;i<duration;i+=1.0f/framerate){ - float s=(signal_output->get_output(Time_spec(i,framerate,duration))+1.0f)/10.0f; - if (!fequal(sig,s)){ - val+=toString(i)+":"+toString(s)+" "; - sig=s; +bool Graph::signal_render(xmlIO &XML,const string &node,const float framerate) { + if (nodes.find(node)!=nodes.end()){ + Signal_node *signal_output=dynamic_cast<Signal_node*>(nodes[node]); + if (signal_output) { + //return signal_output->render(duration,framerate,signal_xml); + XML.addValue("signal_duration",duration); + XML.addValue("signal_framerate",framerate); + float sig=0.0f; + string val=""; + for (float i=0;i<duration;i+=1.0f/framerate){ + float s=(signal_output->get_output(Time_spec(i,framerate,duration))+1.0f)/10.0f; + if (!fequal(sig,s)){ + val+=toString(i)+","+toString(s)+" "; + sig=s; + } } + XML.addValue("signal",val); + return true; } - XML.addValue("signal",val); - return true; + cerr<<"Error: /"<<node<<"/ is not a signal node"<<endl; + + return false; } - cerr<<"Rotor: signal output node not found"<<endl; + cerr<<"Error: signal output node not found"<<endl; return false; } @@ -145,7 +152,7 @@ bool Graph::video_render(const string &output_filename,const float framerate,int uint16_t *audio=nullptr; int samples_in_frame; - for (auto n:nodes) n.second->reset_timer(); + for (auto n:nodes) n.second->reset(); if (usingaudio){ samples_in_frame=(audioloader.get_sample_rate())/framerate; @@ -400,10 +407,10 @@ bool Graph::parseJson(string &data,string &media_path){ //handle expandable inputs - if ((((Image_node*)nodes[nodeID])->image_inputs.size()<=jnodes[i]["image_inputs"].size())&&((Image_node*)nodes[nodeID])->duplicate_inputs){ + if ((((Image_node*)nodes[nodeID])->image_inputs.size()<jnodes[i]["image_inputs"].size())&&((Image_node*)nodes[nodeID])->duplicate_inputs){ string desc=((Image_node*)nodes[nodeID])->image_inputs[0]->description; string title=((Image_node*)nodes[nodeID])->image_inputs[0]->title; - while(((Image_node*)nodes[nodeID])->image_inputs.size()<=jnodes[i]["image_inputs"].size()){ + while(((Image_node*)nodes[nodeID])->image_inputs.size()<jnodes[i]["image_inputs"].size()){ ((Image_node*)nodes[nodeID])->create_image_input(desc,title); cerr<<"creating an image input"<<endl; } @@ -519,10 +526,10 @@ bool Graph::parseXml(string media_path){ uint32_t n3=xml.getNumTags("image_input"); for (uint32_t i3=0;i3<n3;i3++){ //handle expandable inputs - if ((((Image_node*)nodes[nodeID])->image_inputs.size()<=i3)&&((Image_node*)nodes[nodeID])->duplicate_inputs){ + if ((((Image_node*)nodes[nodeID])->image_inputs.size()<i3)&&((Image_node*)nodes[nodeID])->duplicate_inputs){ string desc=((Image_node*)nodes[nodeID])->image_inputs[0]->description; string title=((Image_node*)nodes[nodeID])->image_inputs[0]->title; - while(((Image_node*)nodes[nodeID])->image_inputs.size()<=i3){ + while(((Image_node*)nodes[nodeID])->image_inputs.size()<i3){ ((Image_node*)nodes[nodeID])->create_image_input(desc,title); } } |
