From 5b937b31f75b06488b59a09e5a0f844af782fbd0 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Wed, 18 Dec 2013 13:05:59 +0000 Subject: video feedback mystery --- rotord/src/rotor.h | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/rotord/src/rotor.h b/rotord/src/rotor.h index f256f66..dc7d737 100644 --- a/rotord/src/rotor.h +++ b/rotord/src/rotor.h @@ -119,6 +119,7 @@ inputs: [ #include #include +#include #include #include #include @@ -1134,27 +1135,52 @@ namespace Rotor { Video_feedback(){ title="Video feedback"; description="Repeats output of the last frame"; - feedback=nullptr; + feedbackptr=nullptr; + create_parameter("delay","number","number of frames delay","Delay",1.0,0.0,0.0); NODEID="78edfa28-2d0a-11e3-86c7-9f266fabb10c"; }; Video_feedback(map &settings):Video_feedback() { base_settings(settings); }; - ~Video_feedback(){ }; + ~Video_feedback(){}; void set_feedback(Image *iptr){ - feedback=iptr; + feedbackptr=iptr; } + void init(){ + feedback.clear(); + feedbacknums.clear(); + image.clear(); + }; Image *output(const Frame_spec &frame){ - if (feedback->RGBdata){ - return feedback; + if (feedbackptr->RGBdata){ + feedback.push_back(*feedbackptr); + feedbacknums.push_back(frame.frame()); + cerr<<"video feedback: added, "<::iterator it1=feedback.begin(); + list::iterator iit1=feedbacknums.begin(); + if (feedback.size()>((int)parameters["delay"]->value)){ + if (feedback.size()>((int)parameters["delay"]->value+1)){ + list::iterator it2=feedback.begin(); + list::iterator iit2=feedbacknums.begin(); + advance(it2,feedback.size()-(((int)parameters["delay"]->value)+1)); + advance(iit2,feedback.size()-(((int)parameters["delay"]->value)+1)); + feedback.erase(it1,it2); + feedbacknums.erase(iit1,iit2); + cerr<<"video feedback: removed, "< &_settings) { return new Video_feedback(_settings);}; private: - Image *feedback; + list feedback; + list feedbacknums; + Image *feedbackptr; }; //------------------------------------------------------------------- class Node_factory{ -- cgit v1.2.3