git-svn-id: http://moon:8086/svn/software/trunk/libsrc/avpflms@1 b431acfa-c32f-4a4a-93f1-934dc6c82436
70 lines
2.2 KiB
Plaintext
Executable File
70 lines
2.2 KiB
Plaintext
Executable File
/*-------------------------------------------------------------------------
|
|
* pfft.h Partioned Fast Fourier Transform
|
|
* $Id: $
|
|
*-------------------------------------------------------------------------
|
|
*
|
|
* Copyright (C) 2001 Algo Vision Systems GmbH
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef _PFFT_H
|
|
#define _PFFT_H
|
|
#include "avtypes.h"
|
|
#include "avfft.h"
|
|
|
|
/*-----------------------------------------------------------------------*/
|
|
/* PFLMS-Parameter */
|
|
/*-----------------------------------------------------------------------*/
|
|
|
|
typedef struct _sCOMPLEX
|
|
{
|
|
avfloat_t *pReal, *pImag;
|
|
} COMPLEX;
|
|
|
|
typedef struct _sREALBUF
|
|
{
|
|
avfloat_t *pData;
|
|
struct _sREALBUF *pNext, *pLast, *pLastPS;
|
|
UINT32 user;
|
|
} REALBUF;
|
|
|
|
typedef struct _sCMPXBUF
|
|
{
|
|
struct _sCOMPLEX cmpxData;
|
|
struct _sCMPXBUF *pNext, *pLast, *pLastPS;
|
|
UINT32 user;
|
|
} CMPXBUF;
|
|
|
|
typedef struct _sPFFT
|
|
{
|
|
UINT32 N, P, S, L, C; /* PFLMS-Parameter N, P, S, L, C */
|
|
CMPXBUF *pBufX; /* komplexer Puffer X[P*S][C] */
|
|
CMPXBUF *pX; /* aktuelle Zeiger auf Puffer[p][] */
|
|
COMPLEX *pY; /* temporaerer Puffer fuer Y[] und E[] */
|
|
avfloat_t *pBufXsave; /* Overlap-Save Puffer xs[S*L] */
|
|
FFT *pFFT; /* FFT-Objekt */
|
|
} PFFT;
|
|
|
|
|
|
void CmpxVectMul(struct _sCOMPLEX *pA, struct _sCOMPLEX *pB, struct _sCOMPLEX *pAB, UINT32 len);
|
|
void CmpxVectAdd(struct _sCOMPLEX *pA, struct _sCOMPLEX *pB, struct _sCOMPLEX *pAB, UINT32 len);
|
|
void CmpxVectMac(struct _sCOMPLEX *pA, struct _sCOMPLEX *pB, struct _sCOMPLEX *pAB, UINT32 len);
|
|
void CmpxVectMulS(struct _sCOMPLEX *pA, struct _sCOMPLEX *pB, struct _sCOMPLEX *pAB, UINT32 len);
|
|
void CmpxVectMacS(struct _sCOMPLEX *pA, struct _sCOMPLEX *pB, struct _sCOMPLEX *pAB, UINT32 len);
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
AVERR PfftInit(PFFT *pObj,UINT32 N, UINT32 P, UINT32 S, UINT32 L, UINT32 C);
|
|
AVERR PfftFilterAlloc(PFFT *pObj, CMPXBUF **ppH);
|
|
AVERR PfftFilterInit(PFFT *pObj, avfloat_t *pWTD, CMPXBUF *pH);
|
|
AVERR PfftFilter(PFFT *pObj, CMPXBUF *pH, avfloat_t *px, avfloat_t *py);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* _PFFT_H */
|
|
|