ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki

# 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
FFT_fft

## 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

Enumerator:
 DFT_R2C IDFT_C2R IDFT_R2C DFT_C2R

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.

 CosineTable Common::RDFT::_cos` [private]`

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.

 int Common::RDFT::_signConvention` [private]`

Definition at line 100 of file rdft.h.

 SineTable Common::RDFT::_sin` [private]`

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 Sep 26 2020 05:03:11 for ResidualVM by  1.7.1