This repository has been archived on 2021-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
prpa/src/pipeline.cc

47 lines
1.2 KiB
C++

#include "tbb/pipeline.h"
#include "pipeline.hh"
#include "compose.hh"
#include "filterSample/grey.hh"
#include "filterSample/reverse.hh"
#include "filterSample/merge.hh"
#include "filterSample/interlace.hh"
Pipeline::Pipeline(std::list<VideoReader> input, VideoWriter output)
: input_(input), output_(output)
{
this->input_it_ = this->input_.begin();
this->pipeline_.add_filter(this->input_.front());
this->input_it_++;
}
bool Pipeline::add_filter(std::string filter)
{
if (filter == "grey" || filter == "gray")
this->pipeline_.add_filter(*(new Grey()));
else if (filter == "reverse" || filter == "inverse")
this->pipeline_.add_filter(*(new Reverse()));
else if (filter == "merge" && this->input_it_ != this->input_.end())
{
this->pipeline_.add_filter(*(new Compose(*this->input_it_)));
this->input_it_++;
this->pipeline_.add_filter(*(new Merge()));
}
else if (filter == "interlace" && this->input_it_ != this->input_.end())
{
this->pipeline_.add_filter(*(new Compose(*this->input_it_)));
this->input_it_++;
this->pipeline_.add_filter(*(new Interlace()));
}
else
return false;
return true;
}
void Pipeline::run()
{
this->pipeline_.add_filter(this->output_);
this->pipeline_.run(CHUNK_SIZE);
}