NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
resampler.cpp File Reference
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <assert.h>
#include <string.h>
#include <iostream>
#include "resampler.h"
Include dependency graph for resampler.cpp:

Go to the source code of this file.

Macros

#define resampler_assert   assert
 
#define max(a, b)   (((a) > (b)) ? (a) : (b))
 
#define min(a, b)   (((a) < (b)) ? (a) : (b))
 
#define TRUE   (1)
 
#define FALSE   (0)
 
#define RESAMPLER_DEBUG   0
 
#define M_PI   3.14159265358979323846
 
#define BOX_FILTER_SUPPORT   (0.5f)
 
#define TENT_FILTER_SUPPORT   (1.0f)
 
#define BELL_SUPPORT   (1.5f)
 
#define B_SPLINE_SUPPORT   (2.0f)
 
#define QUADRATIC_SUPPORT   1.5f
 
#define MITCHELL_SUPPORT   (2.0f)
 
#define CATMULL_ROM_SUPPORT   (2.0f)
 
#define BLACKMAN_SUPPORT   (3.0f)
 
#define GAUSSIAN_SUPPORT   (1.25f)
 
#define LANCZOS3_SUPPORT   (3.0f)
 
#define LANCZOS4_SUPPORT   (4.0f)
 
#define LANCZOS6_SUPPORT   (6.0f)
 
#define LANCZOS12_SUPPORT   (12.0f)
 
#define KAISER_SUPPORT   3
 

Functions

static int resampler_range_check (int v, int h)
 
static int cast_to_int (Resample_Real i)
 
static int posmod (int x, int y)
 
static Resample_Real box_filter (Resample_Real t)
 
static Resample_Real tent_filter (Resample_Real t)
 
static Resample_Real bell_filter (Resample_Real t)
 
static Resample_Real B_spline_filter (Resample_Real t)
 
static Resample_Real quadratic (Resample_Real t, const Resample_Real R)
 
static Resample_Real quadratic_interp_filter (Resample_Real t)
 
static Resample_Real quadratic_approx_filter (Resample_Real t)
 
static Resample_Real quadratic_mix_filter (Resample_Real t)
 
static Resample_Real mitchell (Resample_Real t, const Resample_Real B, const Resample_Real C)
 
static Resample_Real mitchell_filter (Resample_Real t)
 
static Resample_Real catmull_rom_filter (Resample_Real t)
 
static double sinc (double x)
 
static Resample_Real clean (double t)
 
static double blackman_exact_window (double x)
 
static Resample_Real blackman_filter (Resample_Real t)
 
static Resample_Real gaussian_filter (Resample_Real t)
 
static Resample_Real lanczos3_filter (Resample_Real t)
 
static Resample_Real lanczos4_filter (Resample_Real t)
 
static Resample_Real lanczos6_filter (Resample_Real t)
 
static Resample_Real lanczos12_filter (Resample_Real t)
 
static double bessel0 (double x)
 
static double kaiser (double alpha, double half_width, double x)
 
static Resample_Real kaiser_filter (Resample_Real t)
 

Variables

static const Resample_Real KAISER_ALPHA = 4.0
 
struct {
   char   name [32]
 
   Resample_Real(*   func )(Resample_Real t)
 
   Resample_Real   support
 
g_filters []
 
static const int NUM_FILTERS = sizeof(g_filters) / sizeof(g_filters[0])
 

Macro Definition Documentation

◆ B_SPLINE_SUPPORT

#define B_SPLINE_SUPPORT   (2.0f)

Definition at line 115 of file resampler.cpp.

◆ BELL_SUPPORT

#define BELL_SUPPORT   (1.5f)

Definition at line 97 of file resampler.cpp.

◆ BLACKMAN_SUPPORT

#define BLACKMAN_SUPPORT   (3.0f)

Definition at line 248 of file resampler.cpp.

◆ BOX_FILTER_SUPPORT

#define BOX_FILTER_SUPPORT   (0.5f)

Definition at line 75 of file resampler.cpp.

◆ CATMULL_ROM_SUPPORT

#define CATMULL_ROM_SUPPORT   (2.0f)

Definition at line 214 of file resampler.cpp.

◆ FALSE

#define FALSE   (0)

Definition at line 42 of file resampler.cpp.

◆ GAUSSIAN_SUPPORT

#define GAUSSIAN_SUPPORT   (1.25f)

Definition at line 261 of file resampler.cpp.

◆ KAISER_SUPPORT

#define KAISER_SUPPORT   3

Definition at line 350 of file resampler.cpp.

◆ LANCZOS12_SUPPORT

#define LANCZOS12_SUPPORT   (12.0f)

Definition at line 309 of file resampler.cpp.

◆ LANCZOS3_SUPPORT

#define LANCZOS3_SUPPORT   (3.0f)

Definition at line 273 of file resampler.cpp.

◆ LANCZOS4_SUPPORT

#define LANCZOS4_SUPPORT   (4.0f)

Definition at line 285 of file resampler.cpp.

◆ LANCZOS6_SUPPORT

#define LANCZOS6_SUPPORT   (6.0f)

Definition at line 297 of file resampler.cpp.

◆ M_PI

#define M_PI   3.14159265358979323846

Definition at line 47 of file resampler.cpp.

◆ max

#define max (   a,
 
)    (((a) > (b)) ? (a) : (b))

Definition at line 30 of file resampler.cpp.

◆ min

#define min (   a,
 
)    (((a) < (b)) ? (a) : (b))

Definition at line 34 of file resampler.cpp.

◆ MITCHELL_SUPPORT

#define MITCHELL_SUPPORT   (2.0f)

Definition at line 208 of file resampler.cpp.

◆ QUADRATIC_SUPPORT

#define QUADRATIC_SUPPORT   1.5f

Definition at line 138 of file resampler.cpp.

◆ resampler_assert

#define resampler_assert   assert

Definition at line 20 of file resampler.cpp.

◆ RESAMPLER_DEBUG

#define RESAMPLER_DEBUG   0

Definition at line 45 of file resampler.cpp.

◆ TENT_FILTER_SUPPORT

#define TENT_FILTER_SUPPORT   (1.0f)

Definition at line 85 of file resampler.cpp.

◆ TRUE

#define TRUE   (1)

Definition at line 38 of file resampler.cpp.

Function Documentation

◆ B_spline_filter()

static Resample_Real B_spline_filter ( Resample_Real  t)
static

Definition at line 116 of file resampler.cpp.

◆ bell_filter()

static Resample_Real bell_filter ( Resample_Real  t)
static

Definition at line 98 of file resampler.cpp.

◆ bessel0()

static double bessel0 ( double  x)
static

Definition at line 321 of file resampler.cpp.

Referenced by kaiser().

◆ blackman_exact_window()

static double blackman_exact_window ( double  x)
static

Definition at line 243 of file resampler.cpp.

References M_PI.

Referenced by blackman_filter(), and gaussian_filter().

◆ blackman_filter()

static Resample_Real blackman_filter ( Resample_Real  t)
static

Definition at line 249 of file resampler.cpp.

References blackman_exact_window(), clean(), and sinc().

Here is the call graph for this function:

◆ box_filter()

static Resample_Real box_filter ( Resample_Real  t)
static

Definition at line 76 of file resampler.cpp.

◆ cast_to_int()

static int cast_to_int ( Resample_Real  i)
inlinestatic

Definition at line 50 of file resampler.cpp.

Referenced by Resampler::make_clist().

◆ catmull_rom_filter()

static Resample_Real catmull_rom_filter ( Resample_Real  t)
static

Definition at line 215 of file resampler.cpp.

References mitchell().

Here is the call graph for this function:

◆ clean()

static Resample_Real clean ( double  t)
static

◆ gaussian_filter()

static Resample_Real gaussian_filter ( Resample_Real  t)
static

Definition at line 262 of file resampler.cpp.

References blackman_exact_window(), clean(), GAUSSIAN_SUPPORT, and M_PI.

Here is the call graph for this function:

◆ kaiser()

static double kaiser ( double  alpha,
double  half_width,
double  x 
)
static

Definition at line 344 of file resampler.cpp.

References bessel0().

Referenced by kaiser_filter().

Here is the call graph for this function:

◆ kaiser_filter()

static Resample_Real kaiser_filter ( Resample_Real  t)
static

Definition at line 351 of file resampler.cpp.

References clean(), kaiser(), KAISER_SUPPORT, and sinc().

Here is the call graph for this function:

◆ lanczos12_filter()

static Resample_Real lanczos12_filter ( Resample_Real  t)
static

Definition at line 310 of file resampler.cpp.

References clean(), and sinc().

Here is the call graph for this function:

◆ lanczos3_filter()

static Resample_Real lanczos3_filter ( Resample_Real  t)
static

Definition at line 274 of file resampler.cpp.

References clean(), and sinc().

Here is the call graph for this function:

◆ lanczos4_filter()

static Resample_Real lanczos4_filter ( Resample_Real  t)
static

Definition at line 286 of file resampler.cpp.

References clean(), and sinc().

Here is the call graph for this function:

◆ lanczos6_filter()

static Resample_Real lanczos6_filter ( Resample_Real  t)
static

Definition at line 298 of file resampler.cpp.

References clean(), and sinc().

Here is the call graph for this function:

◆ mitchell()

static Resample_Real mitchell ( Resample_Real  t,
const Resample_Real  B,
const Resample_Real  C 
)
static

Definition at line 178 of file resampler.cpp.

Referenced by catmull_rom_filter(), and mitchell_filter().

◆ mitchell_filter()

static Resample_Real mitchell_filter ( Resample_Real  t)
static

Definition at line 209 of file resampler.cpp.

References mitchell().

Here is the call graph for this function:

◆ posmod()

static int posmod ( int  x,
int  y 
)
inlinestatic

Definition at line 56 of file resampler.cpp.

Referenced by Resampler::reflect().

◆ quadratic()

static Resample_Real quadratic ( Resample_Real  t,
const Resample_Real  R 
)
static

◆ quadratic_approx_filter()

static Resample_Real quadratic_approx_filter ( Resample_Real  t)
static

Definition at line 160 of file resampler.cpp.

References quadratic().

Here is the call graph for this function:

◆ quadratic_interp_filter()

static Resample_Real quadratic_interp_filter ( Resample_Real  t)
static

Definition at line 155 of file resampler.cpp.

References quadratic().

Here is the call graph for this function:

◆ quadratic_mix_filter()

static Resample_Real quadratic_mix_filter ( Resample_Real  t)
static

Definition at line 165 of file resampler.cpp.

References quadratic().

Here is the call graph for this function:

◆ resampler_range_check()

static int resampler_range_check ( int  v,
int  h 
)
inlinestatic

◆ sinc()

static double sinc ( double  x)
static

◆ tent_filter()

static Resample_Real tent_filter ( Resample_Real  t)
static

Definition at line 86 of file resampler.cpp.

Variable Documentation

◆ func

◆ 

struct { ... } g_filters[]
Initial value:
=
{
{"quadratic_interp", quadratic_interp_filter, QUADRATIC_SUPPORT },
{"quadratic_approx", quadratic_approx_filter, QUADRATIC_SUPPORT },
}
#define KAISER_SUPPORT
Definition: resampler.cpp:350
static Resample_Real box_filter(Resample_Real t)
Definition: resampler.cpp:76
static Resample_Real B_spline_filter(Resample_Real t)
Definition: resampler.cpp:116
static Resample_Real lanczos3_filter(Resample_Real t)
Definition: resampler.cpp:274
static Resample_Real mitchell_filter(Resample_Real t)
Definition: resampler.cpp:209
static Resample_Real lanczos6_filter(Resample_Real t)
Definition: resampler.cpp:298
#define LANCZOS4_SUPPORT
Definition: resampler.cpp:285
#define LANCZOS6_SUPPORT
Definition: resampler.cpp:297
static Resample_Real bell_filter(Resample_Real t)
Definition: resampler.cpp:98
#define BOX_FILTER_SUPPORT
Definition: resampler.cpp:75
#define LANCZOS3_SUPPORT
Definition: resampler.cpp:273
static Resample_Real quadratic_interp_filter(Resample_Real t)
Definition: resampler.cpp:155
#define MITCHELL_SUPPORT
Definition: resampler.cpp:208
#define TENT_FILTER_SUPPORT
Definition: resampler.cpp:85
static Resample_Real kaiser_filter(Resample_Real t)
Definition: resampler.cpp:351
#define LANCZOS12_SUPPORT
Definition: resampler.cpp:309
static Resample_Real quadratic_mix_filter(Resample_Real t)
Definition: resampler.cpp:165
#define CATMULL_ROM_SUPPORT
Definition: resampler.cpp:214
static Resample_Real lanczos4_filter(Resample_Real t)
Definition: resampler.cpp:286
#define BELL_SUPPORT
Definition: resampler.cpp:97
static Resample_Real catmull_rom_filter(Resample_Real t)
Definition: resampler.cpp:215
static Resample_Real lanczos12_filter(Resample_Real t)
Definition: resampler.cpp:310
static Resample_Real blackman_filter(Resample_Real t)
Definition: resampler.cpp:249
static Resample_Real gaussian_filter(Resample_Real t)
Definition: resampler.cpp:262
#define BLACKMAN_SUPPORT
Definition: resampler.cpp:248
static Resample_Real quadratic_approx_filter(Resample_Real t)
Definition: resampler.cpp:160
static Resample_Real tent_filter(Resample_Real t)
Definition: resampler.cpp:86
#define GAUSSIAN_SUPPORT
Definition: resampler.cpp:261
#define B_SPLINE_SUPPORT
Definition: resampler.cpp:115
#define QUADRATIC_SUPPORT
Definition: resampler.cpp:138

Referenced by Resampler::get_filter_name(), and Resampler::Resampler().

◆ KAISER_ALPHA

const Resample_Real KAISER_ALPHA = 4.0
static

Definition at line 343 of file resampler.cpp.

◆ name

char name[32]

Definition at line 371 of file resampler.cpp.

Referenced by YExcel::BasicExcel::AddWorksheet(), tinyxml2::XMLElement::Attribute(), tinyxml2::XMLElement::BoolAttribute(), tinyxml2::XMLPrinter::CloseElement(), YExcel::LargeString::ContinueRead(), YCompoundFiles::Block::Create(), wxTreeListMainWindow::Create(), wxTreeListCtrl::Create(), tinyxml2::XMLElement::DeleteAttribute(), YExcel::BasicExcel::DeleteWorksheet(), LexerNSCR::DescribeProperty(), LexerNPRC::DescribeProperty(), YCompoundFiles::CompoundFile::DirectoryList(), tinyxml2::XMLElement::DoubleAttribute(), EnsureDirectory(), TUnzip::Find(), NumeReEditor::FindAndOpenProcedure(), tinyxml2::XMLElement::FindAttribute(), tinyxml2::XMLElement::FindOrCreateAttribute(), YCompoundFiles::CompoundFile::FindProperty(), FindZipItem(), tinyxml2::XMLHandle::FirstChildElement(), tinyxml2::XMLNode::FirstChildElement(), tinyxml2::XMLConstHandle::FirstChildElement(), tinyxml2::XMLElement::FloatAttribute(), AboutChameleonDialog::GetBitmapResource(), AboutChameleonDialog::GetIconResource(), PackageDialog::getPackageName(), YExcel::BasicExcelWorksheet::GetSheetName(), YExcel::BasicExcel::GetSheetName(), YExcel::BasicExcel::GetWorksheet(), IntervalSet::hasDependentIntervals(), tinyxml2::XMLElement::InsertNewChildElement(), tinyxml2::XMLElement::Int64Attribute(), tinyxml2::XMLElement::IntAttribute(), tinyxml2::XMLHandle::LastChildElement(), tinyxml2::XMLNode::LastChildElement(), tinyxml2::XMLConstHandle::LastChildElement(), CustomWindow::layoutChild(), date::zoned_traits< Posix::time_zone >::locate_zone(), date::zoned_traits< const time_zone * >::locate_zone(), date::make_zoned(), tinyxml2::XMLDocument::NewElement(), tinyxml2::XMLHandle::NextSiblingElement(), tinyxml2::XMLNode::NextSiblingElement(), tinyxml2::XMLConstHandle::NextSiblingElement(), tinyxml2::XMLPrinter::OpenElement(), tinyxml2::XMLHandle::PreviousSiblingElement(), tinyxml2::XMLNode::PreviousSiblingElement(), tinyxml2::XMLConstHandle::PreviousSiblingElement(), LexerNSCR::PropertyType(), LexerNPRC::PropertyType(), tinyxml2::XMLPrinter::PushAttribute(), tinyxml2::XMLElement::QueryAttribute(), tinyxml2::XMLElement::QueryBoolAttribute(), tinyxml2::XMLElement::QueryDoubleAttribute(), tinyxml2::XMLElement::QueryFloatAttribute(), tinyxml2::XMLElement::QueryInt64Attribute(), tinyxml2::XMLElement::QueryIntAttribute(), tinyxml2::XMLElement::QueryStringAttribute(), tinyxml2::XMLElement::QueryUnsigned64Attribute(), tinyxml2::XMLElement::QueryUnsignedAttribute(), Posix::detail::read_name(), ReadWave(), Resampler::Resampler(), tinyxml2::XMLElement::SetAttribute(), NumeRe::GenericFile::setTableName(), tinyxml2::XMLNode::ToElementWithName(), tinyxml2::MemPoolT< ITEM_SIZE >::Trace(), tinyxml2::XMLElement::Unsigned64Attribute(), tinyxml2::XMLElement::UnsignedAttribute(), TUnzip::Unzip(), wxTreeListCtrl::wxTreeListCtrl(), and wxTreeListMainWindow::wxTreeListMainWindow().

◆ NUM_FILTERS

const int NUM_FILTERS = sizeof(g_filters) / sizeof(g_filters[0])
static

◆ support

Resample_Real support

Definition at line 373 of file resampler.cpp.

Referenced by Resampler::Resampler().