1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 *
10 */
11
12 #include "dl/api/omxtypes.h"
13 #include "dl/sp/api/x86SP.h"
14 #include "dl/sp/api/omxSP.h"
15
16 /**
17 * Function: omxSP_FFTGetBufSize_R_F32
18 *
19 * Description:
20 * Computes the size of the specification structure required for the length
21 * 2^order real FFT and IFFT functions.
22 *
23 * Remarks:
24 * This function is used in conjunction with the 32-bit functions
25 * <FFTFwd_RToCCS_F32_Sfs> and <FFTInv_CCSToR_F32_Sfs>.
26 *
27 * Parameters:
28 * [in] order base-2 logarithm of the length; valid in the range
29 * [1,12]. ([1,15] if BIG_FFT_TABLE is defined.)
30 * [out] pSize pointer to the number of bytes required for the
31 * specification structure.
32 *
33 * Return Value:
34 * Standard omxError result. See enumeration for possible result codes.
35 *
36 */
37
omxSP_FFTGetBufSize_R_F32(OMX_INT order,OMX_INT * pSize)38 OMXResult omxSP_FFTGetBufSize_R_F32(OMX_INT order, OMX_INT *pSize) {
39 OMX_INT n_by_2;
40 OMX_INT n;
41
42 if (!pSize || (order < 1) || (order > TWIDDLE_TABLE_ORDER))
43 return OMX_Sts_BadArgErr;
44
45 n_by_2 = 1 << (order - 1);
46 n = n_by_2 << 1;
47
48 *pSize = sizeof(X86FFTSpec_R_FC32) +
49 // Twiddle factors.
50 sizeof(OMX_F32) * (n << 1) +
51 // Ping Pong buffer for doing the n/2 point complex FFT.
52 // pBuf1
53 sizeof(OMX_F32) * n + 4 +
54 // pBuf2
55 sizeof(OMX_F32) * n + 4 +
56 // Extra bytes to get 32 byte alignment of ptwiddle, pBuf1
57 62;
58
59 return OMX_Sts_NoErr;
60 }
61