• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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