AVIR
High-quality pro image resizing library
 
Loading...
Searching...
No Matches
avir::CImageResizerFilterStep< fptype, fptypeatom > Class Template Reference

Image resizer's filtering step class. More...

#include <avir.h>

Inheritance diagram for avir::CImageResizerFilterStep< fptype, fptypeatom >:
avir::CImageResizerFilterStepINL< fptype, fptypeatom >

Classes

struct  CResizePos
 Resizing position structure. More...
 
class  CRPosBuf
 Resizing positions buffer class. More...
 
class  CRPosBufArray
 Resizing positions buffer array class. More...
 

Public Attributes

double DCGain
 DC gain which was applied to the filter. Not defined, if ResampleFactor equals 0.
 
int EdgePixelCount
 The number of edge pixels added. Affects the initial position within the input scanline, used to produce edge pixels. This variable is used and should be defined when IsUpsample equals false and ResampleFactor is greater than 0. When assigning this variable, it is also necessary to update InPrefix, OutLen, and Vars.o variables.
 
CBuffer< fptype > Flt
 Filter to use at this step.
 
const CDSPFracFilterBankLin< fptype > * FltBank
 Filter bank in use by this resizing step, may be equal to FltBankDyn.
 
CDSPFracFilterBankLin< fptype > * FltBankDyn
 Dynamically-allocated filter bank in use by this resizing step. Equals nullptr, if a static FltBank filter bank is in use.
 
int FltLatency
 Filter's latency (group delay, shift) in pixels.
 
CFltBuffer FltOrig
 Originally-designed filter. This buffer may not be assigned. Assigned by filters that precede the resizing step if such filter is planned to be embedded into the interpolation filter as "external" filter. If IsUpsample equals true, and this filter buffer is not empty, the upsampling step will not itself apply any filtering over upsampled input scanline.
 
int InBuf
 Input buffer index, 0 or 1.
 
int InElIncr
 Pixel element increment within the input buffer, used during de-interleaved processing: in this case each image's channel is stored independently, InElIncr elements apart.
 
int InLen
 Input scanline's length in pixels.
 
int InPrefix
 Required input prefix pixels. These prefix pixels will be filled with source scanline's first pixel value. If IsUpsample is true, this is the additional number of times the first pixel will be filtered before processing scanline, this number is also reflected in the OutPrefix.
 
int InSuffix
 Required input suffix pixels. These suffix pixels will be filled with source scanline's last pixel value. If IsUpsample is true, this is the additional number of times the last pixel will be filtered before processing scanline, this number is also reflected in the OutSuffix.
 
bool IsUpsample
 true, if this step is an upsampling step; false, if downsampling step. Should be set to false, if ResampleFactor equals 0.
 
int OutBuf
 Output buffer index. 0 or 1; 2 for the last step.
 
int OutElIncr
 Pixel element increment within the output buffer, used during de-interleaved processing. Equals to InBufElIncr of the next step.
 
int OutLen
 Length of the resulting scanline.
 
int OutPrefix
 Required output prefix pixels. These prefix pixels will not be pre-filled with any values. Value is valid only if IsUpsample equals true.
 
int OutSuffix
 Required input suffix pixels. These suffix pixels will not be pre-filled with any values. Value is valid only if IsUpsample equals true.
 
CBuffer< fptype > PrefixDC
 DC component fluctuations added at the start of the resulting scanline, used when IsUpsample equals true.
 
int ResampleFactor
 Resample factor (greater or equal to 1). If 0, this is a resizing step. This value should be greater than 1, if IsUpsample equals true.
 
CRPosBufRPosBuf
 Resizing positions buffer. Used when ResampleFactor equals 0 (resizing step).
 
CBuffer< fptype > SuffixDC
 DC component fluctuations added at the end of the resulting scanline, used when IsUpsample equals true.
 
const CImageResizerVarsVars
 Image resizing-related variables.
 

Static Public Attributes

static const int EdgePixelCountDef = 3
 The default number of pixels additionally produced at scanline edges during filtering. This is required to reduce edge artifacts.
 

Detailed Description

template<typename fptype, typename fptypeatom>
class avir::CImageResizerFilterStep< fptype, fptypeatom >

Image resizer's filtering step class.

Class defines data to perform a single filtering step over a whole horizontal or vertical scanline. Resizing consists of 1 or more steps that may be performed before the actual resizing takes place. Filtering may also follow a resizing step. Each step must ensure that scanline data contains enough pixels to perform the next step (which may be resizing) without exceeding scanline's bounds.

A derived class must implement several "const" and "static" functions that are used to perform the actual filtering in interleaved or de-interleaved mode.

Template Parameters
fptypeFloating point type to use for storing pixel elements. SIMD types can be used: in this case each element may hold a whole pixel.
fptypeatomThe atomic type the fptype consists of.