18 #ifndef PIC_GL_FILTERING_FILTER_NPASSES_HPP 19 #define PIC_GL_FILTERING_FILTER_NPASSES_HPP 21 #include "../../base.hpp" 23 #include "../../util/std_util.hpp" 25 #include "../../util/array.hpp" 27 #include "../../util/gl/fbo.hpp" 29 #include "../../gl/filtering/filter.hpp" 125 return filters.back()->getFbo();
141 for(
int i = 0; i < 2; i++) {
160 stdVectorClear<ImageGL>(
imgTmp);
178 auto *tmp = imgIn[0];
183 for(
int i = 0; i < n; i++) {
185 flt_i->changePass(i, n);
186 flt_i->OutputSize(imgIn, width, height, channels, frames);
188 imgIn0->
width = width;
203 int width, height, frames, channels;
204 OutputSize(imgIn, width, height, frames, channels);
209 setToANullVector<ImageGL>(
imgTmp, n);
213 filters[0]->OutputSize(imgIn, tw, th, tf, tc);
215 if(tw !=
imgTmp[0]->width ||
216 th !=
imgTmp[0]->height ||
217 tf !=
imgTmp[0]->frames ||
218 tc !=
imgTmp[0]->channels) {
219 stdVectorClear<ImageGL>(
imgTmp);
221 setToANullVector<ImageGL>(
imgTmp, n);
227 imgOut =
new ImageGL(frames, width, height, channels,
IMG_GPU, GL_TEXTURE_2D);
229 if(imgOut->
height != height ||
230 imgOut->
width != width ||
232 imgOut->
frames != frames) {
233 imgOut =
new ImageGL(frames, width, height, channels,
IMG_GPU, GL_TEXTURE_2D);
261 if((nIterations % 2) == 0) {
274 if(imgIn.empty() ||
filters.empty()) {
283 for(
int i = 0; i < n2; i++) {
285 flt_i->changePass(i, n);
292 flt_n->changePass(n2, n);
293 imgOut =
filters[n2]->Process(imgIn, imgOut);
300 if((imgIn.size() <= 0) || (
filters.size() < 1)) {
309 flt_0->changePass(0, n);
312 for(
auto i = 1; i < n; i++) {
314 flt_i->changePass(i, n);
326 if(imgIn.empty() ||
filters.empty()) {
332 int width, height, frames, channels;
333 OutputSize(imgIn, width, height, frames, channels);
335 bool bSame = (imgIn[0]->width == width) &&
336 (imgIn[0]->height == height) &&
337 (imgIn[0]->channels == channels) &&
338 (imgIn[0]->frames == frames);
ImageGL * imgTmpSame[2]
Definition: filter_npasses.hpp:40
int channels
Definition: filter_radial_basis_function.hpp:80
int frames
Definition: filter_radial_basis_function.hpp:80
T * delete_s(T *data)
delete_s
Definition: std_util.hpp:123
void allocateAux()
allocateAux computes extra information after allocation; e.g. strides.
Definition: filter_radial_basis_function.hpp:1057
ImageGL * allocateSimilarOneGL()
allocateSimilarOneGL
Definition: image.hpp:848
The Fbo class.
Definition: fbo.hpp:32
virtual void PreProcess(ImageGLVec imgIn, ImageGL *imgOut)
PreProcess.
Definition: filter_npasses.hpp:48
GLenum target
Definition: display.hpp:47
bool isSimilarType(const Image *img)
isSimilarType checks if the current image is similar to img; i.e. if they have the same width...
Definition: filter_radial_basis_function.hpp:1125
ImageGL * ProcessSame(ImageGLVec imgIn, ImageGL *imgOut)
ProcessSame.
The FilterGLNPasses class.
Definition: filter_npasses.hpp:36
ImageGL * ProcessGen(ImageGLVec imgIn, ImageGL *imgOut)
ProcessGen.
ImageGL * setupAuxNSame(ImageGLVec imgIn, ImageGL *imgOut)
setupAuxNSame
The ImageGL class.
Definition: image.hpp:42
Fbo * getFbo()
getFbo
Definition: filter_npasses.hpp:123
virtual int getIterations()
getIterations
ImageGL * allocateSimilarOneGL()
allocateSimilarOneGL
ImageGL * Process(ImageGLVec imgIn, ImageGL *imgOut)
Process.
void OutputSize(ImageGLVec imgIn, int &width, int &height, int &frames, int &channels)
OutputSize.
std::vector< FilterGL *> filters
Definition: display.hpp:55
The FilterGL class.
Definition: filter.hpp:35
ImageGLVec imgTmp
Definition: filter_npasses.hpp:41
ImageGL * setupAuxNGen(ImageGLVec imgIn, ImageGL *imgOut)
setupAuxNGen
ImageGL * imgAllocated
Definition: filter_npasses.hpp:39
FilterGLNPasses()
FilterGLNPasses.
The FilterGL class.
Definition: display.hpp:35
#define PIC_INLINE
Definition: base.hpp:33
The ImageGL class.
Definition: display.hpp:42
int width
Definition: filter_radial_basis_function.hpp:80
void releaseAux()
releaseAux
Definition: bilateral_separation.hpp:25
std::vector< ImageGL * > ImageGLVec
ImageGLVec an std::vector of pic::ImageGL.
Definition: display.hpp:32
virtual FilterGL * getFilter(int i)
getFilter
std::vector< ImageGL * > ImageGLVec
ImageGLVec an std::vector of pic::ImageGL.
Definition: image_vec.hpp:32
int height
Definition: filter_radial_basis_function.hpp:80
void release()
release
Definition: display.hpp:85