// PARAMETERS:

int n; //!< Length of the sequence to be transformed.

float *x; //!< On entry, an array of length N containing

//!< the sequence to be transformed.

float *wsave; //!< Stores constants used by the transforms.

//!< Initialized for fdcosqf() and fdcosqb() by fdcosqi() (I think).

//!< Initilazed for fdrfftf() and fdrfftb() by fdrffti() (I think).

//!< Some docs suggest that size should be at least (3 * n + 15).

int *ifac; //!< Array containing factors of the problem

//!< dimensions.

//!< (initialization requirements are probably similar to wsave)

//!< Some docs say it needs to be 15 elements, others say n.

//!< Maybe n + 15 is safest.

// TRANSFORM FUNCTIONS:

//! cosine quarter-wave transform.

extern void __ogg_fdcosqf(int n, float *x, float *wsave, int *ifac);

//! backward cosine quarter-wave transform (synthesis).

extern void __ogg_fdcosqb(int n, float *x, float *wsave, int *ifac);

//! forward transform.

extern void __ogg_fdrfftf(int n, float *x, float *wsave, int *ifac);

//! backward transform (synthesis).

extern void __ogg_fdrfftb(int n, float *x, float *wsave, int *ifac);

// INITIALIZATION FUNCTIONS:

//! initialize cosine quarter-wave transform or synthesis.

extern void __ogg_fdcosqi(int n, float *wsave, int *ifac);

//! initialize before applying a transform or synthesis.

extern void __ogg_fdrffti(int n, float *wsave, int *ifac);