ResidualVM logo ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki curved edge

Common::RDFT Class Reference

(Inverse) Real Discrete Fourier Transform. More...

#include <rdft.h>

Collaboration diagram for Common::RDFT:

List of all members.

Public Types

enum  TransformType { DFT_R2C, IDFT_C2R, IDFT_R2C, DFT_C2R }

Public Member Functions

 RDFT (int bits, TransformType trans)
 ~RDFT ()
void calc (float *data)

Private Attributes

int _bits
int _inverse
int _signConvention
SineTable _sin
CosineTable _cos
const float * _tSin
const float * _tCos

Detailed Description

(Inverse) Real Discrete Fourier Transform.

Used in audio:

  • QDM2

Used in engines:

  • scumm

It has four modes:

Below, n = 1 << bits

(I)DFT_R2C: input: n real floats output: n/2 complex floats (stored as real part followed by imag part).

The output represents the first half of the (I)DFT of the input. If F is the complex (I)DFT of the input, then output[0] = F[0] + i * F[n/2] and output[k] = F[k] for k = 1 .. n/2-1. Note that F[0] and F[k] are real since the input is real, and the remaining values of F can be reconstructed from symmetry if desired.

(I)DFT_C2R: input: n/2 complex floats output: n real floats

The input encodes a complex vector x of length n that has the required symmetry to have a real (I)DFT: x[0] = Re(input[0]) x[k] = input[k] for k = 1 .. n/2-1 x[n/2] = Im(input[0]) x[k] = conj(input[n-k]) for k = n/2+1 .. n-1 The output is then the real (I)DFT of x, divided by 2.

TODO: Is this division by 2 intentional?

Definition at line 83 of file rdft.h.

Member Enumeration Documentation


Definition at line 85 of file rdft.h.

Constructor & Destructor Documentation

Common::RDFT::RDFT ( int  bits,
TransformType  trans 

Definition at line 31 of file rdft.cpp.

Common::RDFT::~RDFT (  ) 

Definition at line 45 of file rdft.cpp.

Member Function Documentation

void Common::RDFT::calc ( float *  data  ) 

Definition at line 49 of file rdft.cpp.

Member Data Documentation

int Common::RDFT::_bits [private]

Definition at line 98 of file rdft.h.

Definition at line 103 of file rdft.h.

FFT* Common::RDFT::_fft [private]

Definition at line 107 of file rdft.h.

int Common::RDFT::_inverse [private]

Definition at line 99 of file rdft.h.

Definition at line 100 of file rdft.h.

Definition at line 102 of file rdft.h.

const float* Common::RDFT::_tCos [private]

Definition at line 105 of file rdft.h.

const float* Common::RDFT::_tSin [private]

Definition at line 104 of file rdft.h.

The documentation for this class was generated from the following files:

Generated on Sat Jan 19 2019 05:05:57 for ResidualVM by doxygen 1.7.1
curved edge   curved edge