mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changeset 1ada6df926ba (bug 926838)
This commit is contained in:
parent
a67f848736
commit
e9700a66b6
@ -35,21 +35,6 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Maximum FFT order supported by the twiddle table. Only used by the
|
||||
* float FFT routines. Must be consistent with the table in
|
||||
* armSP_FFT_F32TwiddleTable.c.
|
||||
*/
|
||||
#ifdef BIG_FFT_TABLE
|
||||
#define TWIDDLE_TABLE_ORDER 15
|
||||
#else
|
||||
#define TWIDDLE_TABLE_ORDER 12
|
||||
#endif
|
||||
|
||||
#define OMX_IN
|
||||
#define OMX_OUT
|
||||
#define OMX_INOUT
|
||||
@ -208,24 +193,10 @@ typedef struct
|
||||
/* OMX_F32 */
|
||||
typedef float OMX_F32; /** Single precision floating point,IEEE 754 */
|
||||
|
||||
|
||||
/* OMX_F64 */
|
||||
typedef double OMX_F64; /** Double precision floating point,IEEE 754 */
|
||||
|
||||
/* OMX_FC32 */
|
||||
typedef struct
|
||||
{
|
||||
OMX_F32 Re; /** Real part */
|
||||
OMX_F32 Im; /** Imaginary part */
|
||||
|
||||
} OMX_FC32; /** single precision floating point complex number */
|
||||
|
||||
/* OMX_FC64 */
|
||||
typedef struct
|
||||
{
|
||||
OMX_F64 Re; /** Real part */
|
||||
OMX_F64 Im; /** Imaginary part */
|
||||
|
||||
} OMX_FC64; /** double precision floating point complex number */
|
||||
|
||||
/* OMX_INT */
|
||||
typedef int OMX_INT; /** signed integer corresponding to machine word length, has maximum signed value INT_MAX*/
|
||||
@ -280,7 +251,4 @@ typedef struct
|
||||
|
||||
} OMXSize;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _OMXTYPES_H_ */
|
||||
|
@ -35,7 +35,7 @@
|
||||
#ifndef _OMXSP_H_
|
||||
#define _OMXSP_H_
|
||||
|
||||
#include "dl/api/omxtypes.h"
|
||||
#include "omxtypes.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -46,10 +46,8 @@ extern "C" {
|
||||
typedef void OMXFFTSpec_C_SC16;
|
||||
typedef void OMXFFTSpec_C_SC32;
|
||||
typedef void OMXFFTSpec_R_S16S32;
|
||||
typedef void OMXFFTSpec_R_S16;
|
||||
typedef void OMXFFTSpec_R_S32;
|
||||
typedef void OMXFFTSpec_R_F32;
|
||||
typedef void OMXFFTSpec_C_FC32;
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_Copy_S16 (2.2.1.1.1)
|
||||
@ -1406,47 +1404,6 @@ OMXResult omxSP_FFTInit_C_SC32 (
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInit_C_FC32 (2.2.4.1.2)
|
||||
*
|
||||
* Description:
|
||||
* These functions initialize the specification structures required for the
|
||||
* complex FFT and IFFT functions. Desired block length is specified as an
|
||||
* input. The function <FFTInit_C_FC32> is used to initialize
|
||||
* the specification structures for the functions <FFTFwd_CToC_FC32_Sfs> and
|
||||
* <FFTInv_CToC_FC32_Sfs>.
|
||||
*
|
||||
* Memory for the specification structure *pFFTSpec must be allocated prior
|
||||
* to calling these functions and should be 8-byte aligned for
|
||||
* omxSP_FFTInit_C_FC32.
|
||||
*
|
||||
* The space required for *pFFTSpec, in bytes, can be
|
||||
* determined using <FFTGetBufSize_C_FC32>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the desired block length; valid in the range
|
||||
* [1,15]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pFFTSpec - pointer to initialized specification structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr -no error
|
||||
* OMX_Sts_BadArgErr - bad arguments; returned if one or more of the
|
||||
* following is true:
|
||||
* - pFFTSpec is either NULL or violates the 8-byte alignment
|
||||
* restrictions
|
||||
* - order < 1 or order > 15
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInit_C_FC32(
|
||||
OMXFFTSpec_C_FC32* pFFTSpec,
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -1482,52 +1439,13 @@ OMXResult omxSP_FFTInit_C_FC32(
|
||||
* - order < 0 or order > 12
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInit_R_S16S32(
|
||||
OMXFFTSpec_R_S16S32* pFFTFwdSpec,
|
||||
OMXResult omxSP_FFTInit_R_S16S32 (
|
||||
OMXFFTSpec_R_S16S32*pFFTFwdSpec,
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInit_R_S16
|
||||
*
|
||||
* Description:
|
||||
* These functions initialize specification structures required for the real
|
||||
* FFT and IFFT functions. The function <FFTInit_R_S16> is used
|
||||
* to initialize the specification structures for functions
|
||||
* <FFTFwd_RToCCS_S16_Sfs> and <FFTInv_CCSToR_S16_Sfs>.
|
||||
*
|
||||
* Memory for *pFFTFwdSpec must be allocated before calling these functions
|
||||
* and should be 8-byte aligned.
|
||||
*
|
||||
* The number of bytes required for *pFFTFwdSpec can be
|
||||
* determined using <FFTGetBufSize_R_S16>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the desired block length; valid in the range
|
||||
* [1,12]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pFFTFwdSpec - pointer to the initialized specification structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments; returned if one or more of the
|
||||
* following is true:
|
||||
* - pFFTFwdSpec is either NULL or violates the 8-byte alignment
|
||||
* restrictions
|
||||
* - order < 1 or order > 12
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInit_R_S16 (
|
||||
OMXFFTSpec_R_S32*pFFTFwdSpec,
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInit_R_S32 (2.2.4.1.4)
|
||||
*
|
||||
@ -1567,44 +1485,7 @@ OMXResult omxSP_FFTInit_R_S32 (
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInit_R_F32
|
||||
*
|
||||
* Description:
|
||||
* These functions initialize specification structures required for the real
|
||||
* FFT and IFFT functions. The function <FFTInit_R_F32> is used to initialize
|
||||
* the specification structures for functions <FFTFwd_RToCCS_F32_Sfs>
|
||||
* and <FFTInv_CCSToR_F32_Sfs>.
|
||||
*
|
||||
* Memory for *pFFTFwdSpec must be allocated before calling these functions
|
||||
* and should be 8-byte aligned.
|
||||
*
|
||||
* The number of bytes required for *pFFTFwdSpec can be
|
||||
* determined using <FFTGetBufSize_R_F32>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the desired block length; valid in the range
|
||||
* [1,15]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pFFTFwdSpec - pointer to the initialized specification structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments; returned if one or more of the
|
||||
* following is true:
|
||||
* - pFFTFwdSpec is either NULL or violates the 8-byte alignment
|
||||
* restrictions
|
||||
* - order < 1 or order > 15
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInit_R_F32(
|
||||
OMXFFTSpec_R_F32* pFFTFwdSpec,
|
||||
OMX_INT order
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTGetBufSize_C_SC16 (2.2.4.1.6)
|
||||
@ -1674,38 +1555,6 @@ OMXResult omxSP_FFTGetBufSize_C_SC32 (
|
||||
OMX_INT *pSize
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTGetBufSize_C_FC32
|
||||
*
|
||||
* Description:
|
||||
* These functions compute the size of the specification structure
|
||||
* required for the length 2^order complex FFT and IFFT functions. The function
|
||||
* <FFTGetBufSize_C_FC32> is used in conjunction with the 32-bit functions
|
||||
* <FFTFwd_CToC_FC32_Sfs> and <FFTInv_CToC_FC32_Sfs>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the desired block length; valid in the range
|
||||
* [1,15]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pSize - pointer to the number of bytes required for the specification
|
||||
* structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments; returned if one or more of the
|
||||
* following is true:
|
||||
* - pSize is NULL
|
||||
* - order < 1 or order > 15
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTGetBufSize_C_FC32(
|
||||
OMX_INT order,
|
||||
OMX_INT* pSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
@ -1735,45 +1584,13 @@ OMXResult omxSP_FFTGetBufSize_C_FC32(
|
||||
* order < 0 or order > 12
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTGetBufSize_R_S16S32(
|
||||
OMX_INT order,
|
||||
OMX_INT* pSize
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTGetBufSize_R_S16
|
||||
*
|
||||
* Description:
|
||||
* These functions compute the size of the specification structure
|
||||
* required for the length 2^order real FFT and IFFT functions. The function
|
||||
* <FFTGetBufSize_R_S16> is used in conjunction with the 16-bit
|
||||
* functions <FFTFwd_RToCCS_S16_Sfs> and <FFTInv_CCSToR_S16_Sfs>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the length; valid in the range
|
||||
* [1,12]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pSize - pointer to the number of bytes required for the specification
|
||||
* structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments The function returns
|
||||
* OMX_Sts_BadArgErr if one or more of the following is true:
|
||||
* pSize is NULL
|
||||
* order < 1 or order > 12
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTGetBufSize_R_S16 (
|
||||
OMXResult omxSP_FFTGetBufSize_R_S16S32 (
|
||||
OMX_INT order,
|
||||
OMX_INT *pSize
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTGetBufSize_R_S32 (2.2.4.1.8)
|
||||
*
|
||||
@ -1806,38 +1623,6 @@ OMXResult omxSP_FFTGetBufSize_R_S32 (
|
||||
OMX_INT *pSize
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTGetBufSize_R_F32
|
||||
*
|
||||
* Description:
|
||||
* These functions compute the size of the specification structure
|
||||
* required for the length 2^order real FFT and IFFT functions. The function
|
||||
* <FFTGetBufSize_R_F32> is used in conjunction with the 32-bit functions
|
||||
* <FFTFwd_RToCCS_F32_Sfs> and <FFTInv_CCSToR_F32_Sfs>.
|
||||
*
|
||||
* Input Arguments:
|
||||
*
|
||||
* order - base-2 logarithm of the length; valid in the range [1,15]
|
||||
*
|
||||
* Output Arguments:
|
||||
*
|
||||
* pSize - pointer to the number of bytes required for the specification
|
||||
* structure
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments The function returns
|
||||
* OMX_Sts_BadArgErr if one or more of the following is true:
|
||||
* pSize is NULL
|
||||
* order < 1 or order > 15
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTGetBufSize_R_F32(
|
||||
OMX_INT order,
|
||||
OMX_INT* pSize
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -1878,7 +1663,6 @@ OMXResult omxSP_FFTGetBufSize_R_F32(
|
||||
* - scaleFactor<0 or scaleFactor>16
|
||||
*
|
||||
*/
|
||||
|
||||
OMXResult omxSP_FFTFwd_CToC_SC16_Sfs (
|
||||
const OMX_SC16 *pSrc,
|
||||
OMX_SC16 *pDst,
|
||||
@ -1886,12 +1670,7 @@ OMXResult omxSP_FFTFwd_CToC_SC16_Sfs (
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
OMXResult omxSP_FFTFwd_CToC_SC16_Sfs_neon (
|
||||
const OMX_SC16 *pSrc,
|
||||
OMX_SC16 *pDst,
|
||||
const OMXFFTSpec_C_SC16 *pFFTSpec,
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTFwd_CToC_SC32_Sfs (2.2.4.2.2)
|
||||
@ -1960,7 +1739,7 @@ OMXResult omxSP_FFTFwd_CToC_SC32_Sfs (
|
||||
* must be aligned on a 32-byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
* scaleFactor - scale factor of the output. Valid range is [0,16].
|
||||
* scaleFactor - scale factor of the output. Valid range is [0,16].
|
||||
*
|
||||
* Output Arguments:
|
||||
* order
|
||||
@ -1968,9 +1747,8 @@ OMXResult omxSP_FFTFwd_CToC_SC32_Sfs (
|
||||
* must be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* Positive value - the shift scale that was performed inside
|
||||
* OMX_Sts_NoErr - no error
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - returned if one or more of the following conditions
|
||||
* is true:
|
||||
* - one or more of the following pointers is NULL: pSrc, pDst, or
|
||||
@ -1986,14 +1764,6 @@ OMXResult omxSP_FFTInv_CToC_SC16_Sfs (
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
OMXResult omxSP_FFTInv_CToC_SC16_Sfs_neon (
|
||||
const OMX_SC16 *pSrc,
|
||||
OMX_SC16 *pDst,
|
||||
const OMXFFTSpec_C_SC16 *pFFTSpec,
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -2097,59 +1867,6 @@ OMXResult omxSP_FFTFwd_RToCCS_S16S32_Sfs (
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTFwd_RToCCS_S16_Sfs
|
||||
*
|
||||
* Description:
|
||||
* These functions compute an FFT for a real-valued signal of length of 2^order,
|
||||
* where 0 < order <= 12. Transform length is determined by the
|
||||
* specification structure, which must be initialized prior to calling the FFT
|
||||
* function using the appropriate helper, i.e., <FFTInit_R_S16>.
|
||||
* The relationship between the input and output sequences can
|
||||
* be expressed in terms of the DFT, i.e.:
|
||||
*
|
||||
* x[n] = (2^(-scalefactor)/N) . SUM[k=0,...,N-1] X[k].e^(jnk.2.pi/N)
|
||||
* n=0,1,2,...N-1
|
||||
* N=2^order.
|
||||
*
|
||||
* The conjugate-symmetric output sequence is represented using a CCS vector,
|
||||
* which is of length N+2, and is organized as follows:
|
||||
*
|
||||
* Index: 0 1 2 3 4 5 . . . N-2 N-1 N N+1
|
||||
* Component: R0 0 R1 I1 R2 I2 . . . R[N/2-1] I[N/2-1] R[N/2] 0
|
||||
*
|
||||
* where R[n] and I[n], respectively, denote the real and imaginary components
|
||||
* for FFT bin 'n'. Bins are numbered from 0 to N/2, where N is the FFT length.
|
||||
* Bin index 0 corresponds to the DC component, and bin index N/2 corresponds to
|
||||
* the foldover frequency.
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the real-valued input sequence, of length 2^order;
|
||||
* must be aligned on a 32-byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
* scaleFactor - output scale factor; valid range is [0, 16]
|
||||
*
|
||||
* Output Arguments:
|
||||
* pDst - pointer to output sequence, represented using CCS format, of
|
||||
* length (2^order)+2; must be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments, if one or more of followings is true:
|
||||
* - one of the pointers pSrc, pDst, or pFFTSpec is NULL
|
||||
* - pSrc or pDst is not aligned on a 32-byte boundary
|
||||
* - scaleFactor<0 or scaleFactor >16
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTFwd_RToCCS_S16_Sfs (
|
||||
const OMX_S16* pSrc,
|
||||
OMX_S16* pDst,
|
||||
const OMXFFTSpec_R_S16* pFFTSpec,
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTFwd_RToCCS_S32_Sfs (2.2.4.4.2)
|
||||
@ -2204,133 +1921,7 @@ OMXResult omxSP_FFTFwd_RToCCS_S32_Sfs (
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTFwd_CToC_FC32_Sfs (2.2.4.2.2)
|
||||
*
|
||||
* Description:
|
||||
* Compute an FFT for a complex signal of length of 2^order,
|
||||
* where 0 <= order <= 15.
|
||||
* Transform length is determined by the specification structure, which
|
||||
* must be initialized prior to calling the FFT function using the appropriate
|
||||
* helper, i.e., <FFTInit_C_sc32> or <FFTInit_C_SC16>. The relationship
|
||||
* between the input and output sequences can be expressed in terms of the
|
||||
* DFT, i.e.,
|
||||
*
|
||||
* X[k] = SUM[n=0...N-1]x[n].e^(-jnk.2.pi/N)
|
||||
* k = 0,1,2,..., N-1
|
||||
* N = 2^order
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the input signal, a complex-valued vector of length
|
||||
* 2^order; must be aligned on a 32 byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
*
|
||||
* Output Arguments:
|
||||
* pDst - pointer to the complex-valued output vector, of length 2^order;
|
||||
* must be aligned on an 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - returned if one or more of the following conditions
|
||||
* is true:
|
||||
* - one or more of the following pointers is NULL: pSrc, pDst, or
|
||||
* pFFTSpec.
|
||||
* - pSrc or pDst is not 32-byte aligned
|
||||
* - scaleFactor<0 or scaleFactor >32
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTFwd_CToC_FC32_Sfs (
|
||||
const OMX_FC32 *pSrc,
|
||||
OMX_FC32 *pDst,
|
||||
const OMXFFTSpec_C_FC32 *pFFTSpec
|
||||
);
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Non-NEON version
|
||||
*/
|
||||
OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp (
|
||||
const OMX_FC32 *pSrc,
|
||||
OMX_FC32 *pDst,
|
||||
const OMXFFTSpec_C_FC32 *pFFTSpec
|
||||
);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTFwd_RToCCS_F32_Sfs
|
||||
*
|
||||
* Description:
|
||||
* These functions compute an FFT for a real-valued signal of length
|
||||
* of 2^order, where 0 <= order <= 12. Transform length is determined
|
||||
* by the specification structure, which must be initialized prior to
|
||||
* calling the FFT function using the appropriate helper, i.e.,
|
||||
* <FFTInit_R_F32>. The relationship between the input and output
|
||||
* sequences can be expressed in terms of the DFT, i.e.:
|
||||
*
|
||||
* x[n] = (2^(-scalefactor)/N) . SUM[k=0,...,N-1] X[k].e^(jnk.2.pi/N)
|
||||
* n=0,1,2,...N-1
|
||||
* N=2^order.
|
||||
*
|
||||
* The conjugate-symmetric output sequence is represented using a CCS vector,
|
||||
* which is of length N+2, and is organized as follows:
|
||||
*
|
||||
* Index: 0 1 2 3 4 5 . . . N-2 N-1 N N+1
|
||||
* Component: R0 0 R1 I1 R2 I2 . . . R[N/2-1] I[N/2-1] R[N/2] 0
|
||||
*
|
||||
* where R[n] and I[n], respectively, denote the real and imaginary
|
||||
* components for FFT bin 'n'. Bins are numbered from 0 to N/2, where
|
||||
* N is the FFT length. Bin index 0 corresponds to the DC component,
|
||||
* and bin index N/2 corresponds to the foldover frequency.
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the real-valued input sequence, of length 2^order;
|
||||
* must be aligned on a 32-byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
*
|
||||
* Output Arguments:
|
||||
* pDst - pointer to output sequence, represented using CCS format, of
|
||||
* length (2^order)+2; must be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
|
||||
* OMX_Sts_BadArgErr - bad arguments, if one or more of the
|
||||
* following is true: - one of the pointers pSrc, pDst, or pFFTSpec
|
||||
* is NULL - pSrc or pDst is not aligned on a 32-byte boundary
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTFwd_RToCCS_F32_Sfs(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec
|
||||
);
|
||||
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Non-NEON version of omxSP_FFTFwd_RToCCS_F32_Sfs
|
||||
*/
|
||||
OMXResult omxSP_FFTFwd_RToCCS_F32_Sfs_vfp(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec
|
||||
);
|
||||
|
||||
/*
|
||||
* Just like omxSP_FFTFwd_RToCCS_F32_Sfs, but automatically detects
|
||||
* whether NEON is available or not and chooses the appropriate
|
||||
* routine.
|
||||
*/
|
||||
extern OMXResult (*omxSP_FFTFwd_RToCCS_F32)(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec
|
||||
);
|
||||
#else
|
||||
#define omxSP_FFTFwd_RToCCS_F32 omxSP_FFTFwd_RToCCS_F32_Sfs
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInv_CCSToR_S32S16_Sfs (2.2.4.4.4)
|
||||
@ -2380,53 +1971,6 @@ OMXResult omxSP_FFTInv_CCSToR_S32S16_Sfs (
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInv_CCSToR_S16_Sfs
|
||||
*
|
||||
* Description:
|
||||
* These functions compute the inverse FFT for a conjugate-symmetric input
|
||||
* sequence. Transform length is determined by the specification structure,
|
||||
* which must be initialized prior to calling the FFT function using
|
||||
* <FFTInit_R_S16>. For a transform of length M, the input
|
||||
* sequence is represented using a packed CCS vector of length
|
||||
* M+2, and is organized as follows:
|
||||
*
|
||||
* Index: 0 1 2 3 4 5 . . . M-2 M-1 M M+1
|
||||
* Component R[0] 0 R[1] I[1] R[2] I[2] . . . R[M/2-1] I[M/2-1] R[M/2] 0
|
||||
*
|
||||
* where R[n] and I[n], respectively, denote the real and imaginary components
|
||||
* for FFT bin n.
|
||||
* Bins are numbered from 0 to M/2, where M is the FFT length. Bin index 0
|
||||
* corresponds to the DC component, and bin index M/2 corresponds to the
|
||||
* foldover frequency.
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the complex-valued input sequence represented using
|
||||
* CCS format, of length (2^order) + 2; must be aligned on a 32-byte
|
||||
* boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
* scaleFactor - output scalefactor; range is [0,16]
|
||||
*
|
||||
* Output Arguments:
|
||||
* pDst - pointer to the real-valued output sequence, of length 2^order ; must
|
||||
* be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - bad arguments if one or more of the following is true:
|
||||
* - pSrc, pDst, or pFFTSpec is NULL
|
||||
* - pSrc or pDst is not aligned on a 32-byte boundary
|
||||
* - scaleFactor<0 or scaleFactor >16
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInv_CCSToR_S16_Sfs (
|
||||
const OMX_S16* pSrc,
|
||||
OMX_S16* pDst,
|
||||
const OMXFFTSpec_R_S16* pFFTSpec,
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInv_CCSToR_S32_Sfs (2.2.4.4.4)
|
||||
@ -2475,128 +2019,7 @@ OMXResult omxSP_FFTInv_CCSToR_S32_Sfs (
|
||||
OMX_INT scaleFactor
|
||||
);
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInv_CToC_FC32_Sfs (2.2.4.2.4)
|
||||
*
|
||||
* Description:
|
||||
* These functions compute an inverse FFT for a complex signal of
|
||||
* length of 2^order, where 0 <= order <= 15. Transform length is
|
||||
* determined by the specification structure, which must be
|
||||
* initialized prior to calling the FFT function using the appropriate
|
||||
* helper, i.e., <FFTInit_C_FC32>. The relationship between the input
|
||||
* and output sequences can be expressed in terms of the IDFT, i.e.:
|
||||
*
|
||||
* x[n] = SUM[k=0,...,N-1] X[k].e^(jnk.2.pi/N)
|
||||
* n=0,1,2,...N-1
|
||||
* N=2^order.
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the complex-valued input signal, of length 2^order ;
|
||||
* must be aligned on a 32-byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized specification
|
||||
* structure
|
||||
*
|
||||
* Output Arguments:
|
||||
* order
|
||||
* pDst - pointer to the complex-valued output signal, of length 2^order;
|
||||
* must be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
* OMX_Sts_BadArgErr - returned if one or more of the following conditions
|
||||
* is true:
|
||||
* - one or more of the following pointers is NULL: pSrc, pDst, or
|
||||
* pFFTSpec.
|
||||
* - pSrc or pDst is not 32-byte aligned
|
||||
* - scaleFactor<0 or scaleFactor>32
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInv_CToC_FC32_Sfs (
|
||||
const OMX_FC32 *pSrc,
|
||||
OMX_FC32 *pDst,
|
||||
const OMXFFTSpec_C_FC32 *pFFTSpec
|
||||
);
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Non-NEON version
|
||||
*/
|
||||
OMXResult omxSP_FFTInv_CToC_FC32_Sfs_vfp (
|
||||
const OMX_FC32 *pSrc,
|
||||
OMX_FC32 *pDst,
|
||||
const OMXFFTSpec_C_FC32 *pFFTSpec
|
||||
);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Function: omxSP_FFTInv_CCSToR_F32_Sfs
|
||||
*
|
||||
* Description:
|
||||
* These functions compute the inverse FFT for a conjugate-symmetric input
|
||||
* sequence. Transform length is determined by the specification structure,
|
||||
* which must be initialized prior to calling the FFT function using
|
||||
* <FFTInit_R_F32>. For a transform of length M, the input sequence is
|
||||
* represented using a packed CCS vector of length M+2, and is organized
|
||||
* as follows:
|
||||
*
|
||||
* Index: 0 1 2 3 4 5 . . . M-2 M-1 M M+1
|
||||
* Comp: R[0] 0 R[1] I[1] R[2] I[2] . . . R[M/2-1] I[M/2-1] R[M/2] 0
|
||||
*
|
||||
* where R[n] and I[n], respectively, denote the real and imaginary
|
||||
* components for FFT bin n. Bins are numbered from 0 to M/2, where M
|
||||
* is the FFT length. Bin index 0 corresponds to the DC component,
|
||||
* and bin index M/2 corresponds to the foldover frequency.
|
||||
*
|
||||
* Input Arguments:
|
||||
* pSrc - pointer to the complex-valued input sequence represented
|
||||
* using CCS format, of length (2^order) + 2; must be aligned on a
|
||||
* 32-byte boundary.
|
||||
* pFFTSpec - pointer to the preallocated and initialized
|
||||
* specification structure
|
||||
*
|
||||
* Output Arguments:
|
||||
* pDst - pointer to the real-valued output sequence, of length
|
||||
* 2^order ; must be aligned on a 32-byte boundary.
|
||||
*
|
||||
* Return Value:
|
||||
*
|
||||
* OMX_Sts_NoErr - no error
|
||||
|
||||
* OMX_Sts_BadArgErr - bad arguments if one or more of the
|
||||
* following is true:
|
||||
* - pSrc, pDst, or pFFTSpec is NULL
|
||||
* - pSrc or pDst is not aligned on a 32-byte boundary
|
||||
* - scaleFactor<0 or scaleFactor >32
|
||||
*
|
||||
*/
|
||||
OMXResult omxSP_FFTInv_CCSToR_F32_Sfs(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec
|
||||
);
|
||||
|
||||
#ifdef __arm__
|
||||
/*
|
||||
* Non-NEON version of omxSP_FFTInv_CCSToR_F32_Sfs
|
||||
*/
|
||||
OMXResult omxSP_FFTInv_CCSToR_F32_Sfs_vfp(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec
|
||||
);
|
||||
|
||||
/*
|
||||
* Just like omxSP_FFTInv_CCSToR_F32_Sfs, but automatically detects
|
||||
* whether NEON is available or not and chooses the appropriate
|
||||
* routine.
|
||||
*/
|
||||
extern OMXResult (*omxSP_FFTInv_CCSToR_F32)(
|
||||
const OMX_F32* pSrc,
|
||||
OMX_F32* pDst,
|
||||
const OMXFFTSpec_R_F32* pFFTSpec);
|
||||
#else
|
||||
#define omxSP_FFTInv_CCSToR_F32 omxSP_FFTInv_CCSToR_F32_Sfs
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user