Index: third_party/openmax_dl/dl/sp/api/omxSP.h |
diff --git a/third_party/openmax_dl/dl/sp/api/omxSP.h b/third_party/openmax_dl/dl/sp/api/omxSP.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3016c772f73b1dfbd0eda38e87e99d5e32734cb5 |
--- /dev/null |
+++ b/third_party/openmax_dl/dl/sp/api/omxSP.h |
@@ -0,0 +1,2286 @@ |
+/** |
+ * File: omxSP.h |
+ * Brief: OpenMAX DL v1.0.2 - Signal Processing library |
+ * |
+ * Copyright 2005-2008 The Khronos Group Inc. All Rights Reserved. |
+ * |
+ * These materials are protected by copyright laws and contain material |
+ * proprietary to the Khronos Group, Inc. You may use these materials |
+ * for implementing Khronos specifications, without altering or removing |
+ * any trademark, copyright or other notice from the specification. |
+ * |
+ * Khronos Group makes no, and expressly disclaims any, representations |
+ * or warranties, express or implied, regarding these materials, including, |
+ * without limitation, any implied warranties of merchantability or fitness |
+ * for a particular purpose or non-infringement of any intellectual property. |
+ * Khronos Group makes no, and expressly disclaims any, warranties, express |
+ * or implied, regarding the correctness, accuracy, completeness, timeliness, |
+ * and reliability of these materials. |
+ * |
+ * Under no circumstances will the Khronos Group, or any of its Promoters, |
+ * Contributors or Members or their respective partners, officers, directors, |
+ * employees, agents or representatives be liable for any damages, whether |
+ * direct, indirect, special or consequential damages for lost revenues, |
+ * lost profits, or otherwise, arising from or in connection with these |
+ * materials. |
+ * |
+ * Khronos and OpenMAX are trademarks of the Khronos Group Inc. |
+ * |
+ */ |
+ |
+/* *****************************************************************************************/ |
+ |
+#ifndef _OMXSP_H_ |
+#define _OMXSP_H_ |
+ |
+#include "dl/api/omxtypes.h" |
+ |
+#ifdef __cplusplus |
+extern "C" { |
+#endif |
+ |
+ |
+/* 2.1 Vendor-Specific FFT Data Structures */ |
+ typedef void OMXFFTSpec_C_SC16; |
+ typedef void OMXFFTSpec_C_SC32; |
+ typedef void OMXFFTSpec_R_S16S32; |
+ typedef void OMXFFTSpec_R_S32; |
+ typedef void OMXFFTSpec_R_F32; |
+ typedef void OMXFFTSpec_C_FC32; |
+ |
+/** |
+ * Function: omxSP_Copy_S16 (2.2.1.1.1) |
+ * |
+ * Description: |
+ * Copies the len elements of the vector pointed to by pSrcinto the len |
+ * elements of the vector pointed to by pDst. That is: |
+ * pDst[i] = pSrc[i], for (i=0, 1, ..., len-1) |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the source vector |
+ * len - number of elements contained in the source and destination vectors |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the destination vector |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments detected; returned if one or more of |
+ * the following is true: |
+ * - pSrc or pDst is NULL |
+ * - len < 0 |
+ * |
+ */ |
+OMXResult omxSP_Copy_S16 ( |
+ const OMX_S16 *pSrc, |
+ OMX_S16 *pDst, |
+ OMX_INT len |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_DotProd_S16 (2.2.2.1.1) |
+ * |
+ * Description: |
+ * Calculates the dot product of the two input vectors. This function does |
+ * not perform scaling. The internal accumulator width must be at least 32 |
+ * bits. If any of the partially accumulated values exceeds the range of a |
+ * signed 32-bit integer then the result is undefined. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc1 - pointer to the first input vector; must be aligned on an 8-byte |
+ * boundary. |
+ * pSrc2 - pointer to the second input vector; must be aligned on an 8-byte |
+ * boundary. |
+ * len - length of the vectors in pSrc1 and pSrc2 |
+ * |
+ * Output Arguments: |
+ * |
+ * Return Value: |
+ * |
+ * The dot product result Note: this function returns the actual result |
+ * rather than the standard OMXError. |
+ * |
+ */ |
+OMX_S32 omxSP_DotProd_S16 ( |
+ const OMX_S16 *pSrc1, |
+ const OMX_S16 *pSrc2, |
+ OMX_INT len |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_DotProd_S16_Sfs (2.2.2.1.2) |
+ * |
+ * Description: |
+ * Calculates the dot product of the two input signals with output scaling |
+ * and saturation, i.e., the result is multiplied by two to the power of the |
+ * negative (-)scalefactor (scaled) prior to return. The result is saturated |
+ * with rounding if the scaling operation produces a value outside the range |
+ * of a signed 32-bit integer. Rounding behavior is defined in section 1.6.7 |
+ * Integer Scaling and Rounding Conventions. The internal accumulator width |
+ * must be at least 32 bits. The result is undefined if any of the partially |
+ * accumulated values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc1 - pointer to the first input vector; must be aligned on an 8-byte |
+ * boundary. |
+ * pSrc2 - pointer to the second input vector; must be aligned on an 8-byte |
+ * boundary. |
+ * len - length of the vectors in pSrc1 and pSrc2 |
+ * scaleFactor - integer scalefactor |
+ * |
+ * Output Arguments: |
+ * |
+ * Return Value: |
+ * |
+ * The dot product result Note: This function returns the actual result |
+ * rather than the standard OMXError. |
+ * |
+ */ |
+OMX_S32 omxSP_DotProd_S16_Sfs ( |
+ const OMX_S16 *pSrc1, |
+ const OMX_S16 *pSrc2, |
+ OMX_INT len, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_BlockExp_S16 (2.2.2.2.2) |
+ * |
+ * Description: |
+ * Block exponent calculation for 16-bit and 32-bit signals (count leading |
+ * sign bits). These functions compute the number of extra sign bits of all |
+ * values in the 16-bit and 32-bit input vector pSrc and return the minimum |
+ * sign bit count. This is also the maximum shift value that could be used in |
+ * scaling the block of data. The functions BlockExp_S16 and |
+ * BlockExp_S32 return the values 15 and 31, respectively, for input vectors in |
+ * which all entries are equal to zero. |
+ * |
+ * Note: These functions differ from other DL functions by not returning the |
+ * standard OMXError but the actual result. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the input vector |
+ * len - number of elements contained in the input and output |
+ * vectors (0 < len < 65536) |
+ * |
+ * Output Arguments: |
+ * |
+ * none |
+ * |
+ * Return Value: |
+ * |
+ * Maximum exponent that may be used in scaling |
+ * |
+ */ |
+OMX_INT omxSP_BlockExp_S16 ( |
+ const OMX_S16 *pSrc, |
+ OMX_INT len |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_BlockExp_S32 (2.2.2.2.2) |
+ * |
+ * Description: |
+ * Block exponent calculation for 16-bit and 32-bit signals (count leading |
+ * sign bits). These functions compute the number of extra sign bits of all |
+ * values in the 16-bit and 32-bit input vector pSrc and return the minimum |
+ * sign bit count. This is also the maximum shift value that could be used in |
+ * scaling the block of data. The functions BlockExp_S16 and |
+ * BlockExp_S32 return the values 15 and 31, respectively, for input vectors in |
+ * which all entries are equal to zero. |
+ * |
+ * Note: These functions differ from other DL functions by not returning the |
+ * standard OMXError but the actual result. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the input vector |
+ * len - number of elements contained in the input and output |
+ * vectors (0 < len < 65536) |
+ * |
+ * Output Arguments: |
+ * |
+ * none |
+ * |
+ * Return Value: |
+ * |
+ * Maximum exponent that may be used in scaling |
+ * |
+ */ |
+OMX_INT omxSP_BlockExp_S32 ( |
+ const OMX_S32 *pSrc, |
+ OMX_INT len |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIR_Direct_S16 (2.2.3.1.1) |
+ * |
+ * Description: |
+ * Block FIR filtering for 16-bit data type. This function applies the |
+ * FIR filter defined by the coefficient vector pTapsQ15 to a vector of |
+ * input data. The result is saturated with rounding if the operation |
+ * produces a value outside the range of a signed 16-bit integer. |
+ * Rounding behavior is defined in: |
+ * section 1.6.7 "Integer Scaling and Rounding Conventions". |
+ * The internal accumulator width must be at least 32 bits. The result |
+ * is undefined if any of the partially accumulated values exceeds the |
+ * range of a signed 32-bit integer. |
+ * |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * sampLen - the number of samples contained in the input and output |
+ * vectors |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k <tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pSrc, |
+ * - pDst, |
+ * - pSrcDst, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - samplen < 0 |
+ * - tapslen < 1 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen). |
+ * |
+ */ |
+OMXResult omxSP_FIR_Direct_S16 ( |
+ const OMX_S16 *pSrc, |
+ OMX_S16 *pDst, |
+ OMX_INT sampLen, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIR_Direct_S16_I (2.2.3.1.1) |
+ * |
+ * Description: |
+ * Block FIR filtering for 16-bit data type. This function applies the |
+ * FIR filter defined by the coefficient vector pTapsQ15 to a vector of |
+ * input data. The result is saturated with rounding if the operation |
+ * produces a value outside the range of a signed 16-bit integer. |
+ * Rounding behavior is defined in: |
+ * section 1.6.7 "Integer Scaling and Rounding Conventions". |
+ * The internal accumulator width must be at least 32 bits. The result |
+ * is undefined if any of the partially accumulated values exceeds the |
+ * range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * sampLen - the number of samples contained in the input and output |
+ * vectors |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k <tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * |
+ * Output Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pSrc, |
+ * - pDst, |
+ * - pSrcDst, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - samplen < 0 |
+ * - tapslen < 1 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen). |
+ * |
+ */ |
+OMXResult omxSP_FIR_Direct_S16_I ( |
+ OMX_S16 *pSrcDst, |
+ OMX_INT sampLen, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIR_Direct_S16_Sfs (2.2.3.1.1) |
+ * |
+ * Description: |
+ * Block FIR filtering for 16-bit data type. This function applies |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a |
+ * vector of input data. The output is multiplied by 2 to the negative |
+ * power of scalefactor (i.e., 2^-scalefactor) before returning to the caller. |
+ * Scaling and rounding conventions are defined in section 1.6.7. |
+ * The internal accumulator width must be at least 32 bits. |
+ * The result is undefined if any of the partially accumulated |
+ * values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * sampLen - the number of samples contained in the input and output |
+ * vectors |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k <tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * scaleFactor - saturation fixed scalefactor |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pSrc, |
+ * - pDst, |
+ * - pSrcDst, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - samplen < 0 |
+ * - tapslen < 1 |
+ * - scaleFactor < 0 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen). |
+ * |
+ */ |
+OMXResult omxSP_FIR_Direct_S16_Sfs ( |
+ const OMX_S16 *pSrc, |
+ OMX_S16 *pDst, |
+ OMX_INT sampLen, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIR_Direct_S16_ISfs (2.2.3.1.1) |
+ * |
+ * Description: |
+ * Block FIR filtering for 16-bit data type. This function applies |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a |
+ * vector of input data. The output is multiplied by 2 to the negative |
+ * power of scalefactor (i.e., 2^-scalefactor) before returning to the caller. |
+ * Scaling and rounding conventions are defined in section 1.6.7. |
+ * The internal accumulator width must be at least 32 bits. |
+ * The result is undefined if any of the partially accumulated |
+ * values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * sampLen - the number of samples contained in the input and output |
+ * vectors |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k <tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * scaleFactor - saturation fixed scalefactor |
+ * |
+ * Output Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pSrc, |
+ * - pDst, |
+ * - pSrcDst, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - samplen < 0 |
+ * - tapslen < 1 |
+ * - scaleFactor < 0 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen). |
+ * |
+ */ |
+OMXResult omxSP_FIR_Direct_S16_ISfs ( |
+ OMX_S16 *pSrcDst, |
+ OMX_INT sampLen, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIROne_Direct_S16 (2.2.3.1.2) |
+ * |
+ * Description: |
+ * Single-sample FIR filtering for 16-bit data type. These functions apply |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a single |
+ * sample of input data. The result is saturated with rounding if the |
+ * operation produces a value outside the range of a signed 16-bit integer. |
+ * Rounding behavior is defined in: |
+ * section 1.6.7 "Integer Scaling and Rounding Conventions". |
+ * The internal accumulator width must be at least 32 bits. The result is |
+ * undefined if any of the partially accumulated values exceeds the range of a |
+ * signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * val - the single input sample to which the filter is |
+ * applied. |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (as defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k < tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * |
+ * Output Arguments: |
+ * |
+ * pResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pResult, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - tapslen < 1 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen) |
+ * |
+ */ |
+OMXResult omxSP_FIROne_Direct_S16 ( |
+ OMX_S16 val, |
+ OMX_S16 *pResult, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIROne_Direct_S16_I (2.2.3.1.2) |
+ * |
+ * Description: |
+ * Single-sample FIR filtering for 16-bit data type. These functions apply |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a single |
+ * sample of input data. The result is saturated with rounding if the |
+ * operation produces a value outside the range of a signed 16-bit integer. |
+ * Rounding behavior is defined in: |
+ * section 1.6.7 "Integer Scaling and Rounding Conventions". |
+ * The internal accumulator width must be at least 32 bits. The result is |
+ * undefined if any of the partially accumulated values exceeds the range of a |
+ * signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pValResult - pointer to the single input sample to which the filter is |
+ * applied. |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (as defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k < tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * |
+ * Output Arguments: |
+ * |
+ * pValResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pValResult, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - tapslen < 1 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen) |
+ * |
+ */ |
+OMXResult omxSP_FIROne_Direct_S16_I ( |
+ OMX_S16 *pValResult, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIROne_Direct_S16_Sfs (2.2.3.1.2) |
+ * |
+ * Description: |
+ * Single-sample FIR filtering for 16-bit data type. These functions apply |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a single |
+ * sample of input data. The output is multiplied by 2 to the negative power |
+ * of scalefactor (i.e., 2^-scalefactor) before returning to the user. |
+ * Scaling and rounding conventions are defined in section 1.6.7. |
+ * The internal accumulator width must be at least 32 bits. |
+ * The result is undefined if any of the partially accumulated values exceeds |
+ * the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * val - the single input sample to which the filter is |
+ * applied. |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (as defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k < tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * scaleFactor - saturation fixed scaleFactor |
+ * |
+ * Output Arguments: |
+ * |
+ * pResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pResult, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - tapslen < 1 |
+ * - scaleFactor < 0 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen) |
+ * |
+ */ |
+OMXResult omxSP_FIROne_Direct_S16_Sfs ( |
+ OMX_S16 val, |
+ OMX_S16 *pResult, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FIROne_Direct_S16_ISfs (2.2.3.1.2) |
+ * |
+ * Description: |
+ * Single-sample FIR filtering for 16-bit data type. These functions apply |
+ * the FIR filter defined by the coefficient vector pTapsQ15 to a single |
+ * sample of input data. The output is multiplied by 2 to the negative power |
+ * of scalefactor (i.e., 2^-scalefactor) before returning to the user. |
+ * Scaling and rounding conventions are defined in section 1.6.7. |
+ * The internal accumulator width must be at least 32 bits. |
+ * The result is undefined if any of the partially accumulated values exceeds |
+ * the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pValResult - the pointer to a single input sample to which the filter is |
+ * applied. |
+ * pTapsQ15 - pointer to the vector that contains the filter coefficients, |
+ * represented in Q0.15 format (as defined in section 1.6.5). Given |
+ * that: |
+ * -32768 = pTapsQ15(k) < 32768, |
+ * 0 = k < tapsLen, |
+ * the range on the actual filter coefficients is -1 = bK <1, and |
+ * therefore coefficient normalization may be required during the |
+ * filter design process. |
+ * tapsLen - the number of taps, or, equivalently, the filter order + 1 |
+ * pDelayLine - pointer to the 2.tapsLen -element filter memory buffer |
+ * (state). The user is responsible for allocation, initialization, |
+ * and de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * pDelayLineIndex - pointer to the filter memory index that is maintained |
+ * internally by the function. The user should initialize the value |
+ * of this index to zero. |
+ * scaleFactor - saturation fixed scaleFactor |
+ * |
+ * Output Arguments: |
+ * |
+ * pValResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - One or more of the following pointers is NULL: |
+ * - pValResult, |
+ * - pTapsQ15, |
+ * - pDelayLine, or |
+ * - pDelayLineIndex |
+ * - tapslen < 1 |
+ * - scaleFactor < 0 |
+ * - *pDelayLineIndex < 0 or *pDelayLineIndex >= (2 * tapslen) |
+ * |
+ */ |
+OMXResult omxSP_FIROne_Direct_S16_ISfs ( |
+ OMX_S16 *pValResult, |
+ const OMX_S16 *pTapsQ15, |
+ OMX_INT tapsLen, |
+ OMX_S16 *pDelayLine, |
+ OMX_INT *pDelayLineIndex, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIR_Direct_S16 (2.2.3.2.1) |
+ * |
+ * Description: |
+ * Block IIR filtering for 16-bit data. This function applies the direct form |
+ * II IIR filter defined by the coefficient vector pTaps to a vector of input |
+ * data. The internal accumulator width must be at least 32 bits, and the |
+ * result is saturated if the operation produces a value outside the range of |
+ * a signed 16-bit integer, i.e., the output will saturate to 0x8000 (-32768) |
+ * for a negative overflow or 0x7fff (32767) for a positive overflow. The |
+ * result is undefined if any of the partially accumulated values exceeds the |
+ * range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * len - the number of samples contained in both the input and output |
+ * vectors |
+ * pTaps - pointer to the 2L+2-element vector that contains the combined |
+ * numerator and denominator filter coefficients from the system |
+ * transfer function, H(z). Coefficient scaling and coefficient |
+ * vector organization should follow the conventions described |
+ * above. The value of the coefficient scaleFactor exponent must be |
+ * non-negative (sf=0). |
+ * order - the maximum of the degrees of the numerator and denominator |
+ * coefficient polynomials from the system transfer function, H(z). |
+ * In the notation of section 2.2.3.2, the parameter |
+ * order=max(K,M)=L gives the maximum delay, in samples, used to |
+ * compute each output sample. |
+ * pDelayLine - pointer to the L-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: |
+ * - pSrc, |
+ * - pDst, |
+ * - pTaps, or |
+ * - pDelayLine. |
+ * - len < 0 |
+ * - pTaps[order+1] < 0 (negative scaling) |
+ * - order < 1 |
+ * |
+ */ |
+OMXResult omxSP_IIR_Direct_S16 ( |
+ const OMX_S16 *pSrc, |
+ OMX_S16 *pDst, |
+ OMX_INT len, |
+ const OMX_S16 *pTaps, |
+ OMX_INT order, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIR_Direct_S16_I (2.2.3.2.1) |
+ * |
+ * Description: |
+ * Block IIR filtering for 16-bit data. This function applies the direct form |
+ * II IIR filter defined by the coefficient vector pTaps to a vector of input |
+ * data. The internal accumulator width must be at least 32 bits, and the |
+ * result is saturated if the operation produces a value outside the range of |
+ * a signed 16-bit integer, i.e., the output will saturate to 0x8000 (-32768) |
+ * for a negative overflow or 0x7fff (32767) for a positive overflow. The |
+ * result is undefined if any of the partially accumulated values exceeds the |
+ * range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * len - the number of samples contained in both the input and output |
+ * vectors |
+ * pTaps - pointer to the 2L+2-element vector that contains the combined |
+ * numerator and denominator filter coefficients from the system |
+ * transfer function, H(z). Coefficient scaling and coefficient |
+ * vector organization should follow the conventions described |
+ * above. The value of the coefficient scaleFactor exponent must be |
+ * non-negative (sf>=0). |
+ * order - the maximum of the degrees of the numerator and denominator |
+ * coefficient polynomials from the system transfer function, H(z). |
+ * In the notation of section 2.2.3.2, the parameter |
+ * order=max(K,M)=L gives the maximum delay, in samples, used to |
+ * compute each output sample. |
+ * pDelayLine - pointer to the L-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: |
+ * - pSrcDst, |
+ * - pTaps, or |
+ * - pDelayLine. |
+ * - len < 0 |
+ * - pTaps[order+1] < 0 (negative scaling) |
+ * - order < 1 |
+ * |
+ */ |
+OMXResult omxSP_IIR_Direct_S16_I ( |
+ OMX_S16 *pSrcDst, |
+ OMX_INT len, |
+ const OMX_S16 *pTaps, |
+ OMX_INT order, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIROne_Direct_S16 (2.2.3.2.2) |
+ * |
+ * Description: |
+ * Single sample IIR filtering for 16-bit data. This function applies the |
+ * direct form II IIR filter defined by the coefficient vector pTaps to a |
+ * single sample of input data. The internal accumulator width must be at |
+ * least 32 bits, and the result is saturated if the operation produces a |
+ * value outside the range of a signed 16-bit integer, i.e., the output will |
+ * saturate to 0x8000 (-32768) for a negative overflow or 0x7fff (32767) for a |
+ * positive overflow. The result is undefined if any of the partially |
+ * accumulated values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * val - the single input sample to which the filter is |
+ * applied. |
+ * pTaps - pointer to the 2L+2 -element vector that contains the combined |
+ * numerator and denominator filter coefficients from the system |
+ * transfer function, H(z). Coefficient scaling and coefficient |
+ * vector organization should follow the conventions described |
+ * above. The value of the coefficient scaleFactor exponent must be |
+ * non-negative (sf>=0). |
+ * order - the maximum of the degrees of the numerator and denominator |
+ * coefficient polynomials from the system transfer function, H(z). |
+ * In the notation of section 2.2.3.2, the parameter |
+ * order=max(K,M)=L gives the maximum delay, in samples, used to |
+ * compute each output sample. |
+ * pDelayLine - pointer to the L-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: pResult, |
+ * pTaps, or pDelayLine. |
+ * - order < 1 |
+ * - pTaps[order+1] < 0 (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIROne_Direct_S16 ( |
+ OMX_S16 val, |
+ OMX_S16 *pResult, |
+ const OMX_S16 *pTaps, |
+ OMX_INT order, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIROne_Direct_S16_I (2.2.3.2.2) |
+ * |
+ * Description: |
+ * Single sample IIR filtering for 16-bit data. This function applies the |
+ * direct form II IIR filter defined by the coefficient vector pTaps to a |
+ * single sample of input data. The internal accumulator width must be at |
+ * least 32 bits, and the result is saturated if the operation produces a |
+ * value outside the range of a signed 16-bit integer, i.e., the output will |
+ * saturate to 0x8000 (-32768) for a negative overflow or 0x7fff (32767) for a |
+ * positive overflow. The result is undefined if any of the partially |
+ * accumulated values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pValResult - pointer to the single input sample to which the filter is |
+ * applied. |
+ * pTaps - pointer to the 2L+2 -element vector that contains the combined |
+ * numerator and denominator filter coefficients from the system |
+ * transfer function, H(z). Coefficient scaling and coefficient |
+ * vector organization should follow the conventions described |
+ * above. The value of the coefficient scaleFactor exponent must be |
+ * non-negative (sf>=0). |
+ * order - the maximum of the degrees of the numerator and denominator |
+ * coefficient polynomials from the system transfer function, H(z). |
+ * In the notation of section 2.2.3.2, the parameter |
+ * order=max(K,M)=L gives the maximum delay, in samples, used to |
+ * compute each output sample. |
+ * pDelayLine - pointer to the L-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pValResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: |
+ * pValResult, pTaps, or pDelayLine. |
+ * - order < 1 |
+ * - pTaps[order+1] < 0 (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIROne_Direct_S16_I ( |
+ OMX_S16 *pValResult, |
+ const OMX_S16 *pTaps, |
+ OMX_INT order, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIR_BiQuadDirect_S16 (2.2.3.3.1) |
+ * |
+ * Description: |
+ * Block biquad IIR filtering for 16-bit data type. This function applies the |
+ * direct form II biquad IIR cascade defined by the coefficient vector pTaps |
+ * to a vector of input data. The internal accumulator width must be at least |
+ * 32 bits, and the result is saturated if the operation produces a value |
+ * outside the range of a signed 16-bit integer, i.e., the output will |
+ * saturate to 0x8000 (-32768) for a negative overflow or 0x7fff (32767) for a |
+ * positive overflow. The result is undefined if any of the partially |
+ * accumulated values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * len - the number of samples contained in both the input and output |
+ * vectors |
+ * pTaps - pointer to the 6P -element vector that contains the combined |
+ * numerator and denominator filter coefficients from the biquad |
+ * cascade. Coefficient scaling and coefficient vector organization |
+ * should follow the conventions described above. The value of the |
+ * coefficient scaleFactor exponent must be non-negative. (sfp>=0). |
+ * numBiquad - the number of biquads contained in the IIR filter cascade: |
+ * (P) |
+ * pDelayLine - pointer to the 2P -element filter memory buffer (state). |
+ * The user is responsible for allocation, initialization, and |
+ * de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: pSrc, pDst, |
+ * pTaps, or pDelayLine. |
+ * - len < 0 |
+ * - numBiquad < 1 |
+ * - pTaps[3+n*6] < 0, for 0 <= n < numBiquad (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIR_BiQuadDirect_S16 ( |
+ const OMX_S16 *pSrc, |
+ OMX_S16 *pDst, |
+ OMX_INT len, |
+ const OMX_S16 *pTaps, |
+ OMX_INT numBiquad, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIR_BiQuadDirect_S16_I (2.2.3.3.1) |
+ * |
+ * Description: |
+ * Block biquad IIR filtering for 16-bit data type. This function applies the |
+ * direct form II biquad IIR cascade defined by the coefficient vector pTaps |
+ * to a vector of input data. The internal accumulator width must be at least |
+ * 32 bits, and the result is saturated if the operation produces a value |
+ * outside the range of a signed 16-bit integer, i.e., the output will |
+ * saturate to 0x8000 (-32768) for a negative overflow or 0x7fff (32767) for a |
+ * positive overflow. The result is undefined if any of the partially |
+ * accumulated values exceeds the range of a signed 32-bit integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of input samples to which the |
+ * filter is applied |
+ * len - the number of samples contained in both the input and output |
+ * vectors |
+ * pTaps - pointer to the 6P -element vector that contains the combined |
+ * numerator and denominator filter coefficients from the biquad |
+ * cascade. Coefficient scaling and coefficient vector organization |
+ * should follow the conventions described above. The value of the |
+ * coefficient scaleFactor exponent must be non-negative. (sfp>=0). |
+ * numBiquad - the number of biquads contained in the IIR filter cascade: |
+ * (P) |
+ * pDelayLine - pointer to the 2P -element filter memory buffer (state). |
+ * The user is responsible for allocation, initialization, and |
+ * de-allocation. The filter memory elements are initialized to |
+ * zero in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pSrcDst - pointer to the vector of filtered output samples |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: |
+ * pSrcDst, pTaps, or pDelayLine. |
+ * - len < 0 |
+ * - numBiquad < 1 |
+ * - pTaps[3+n*6] < 0, for 0 <= n < numBiquad (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIR_BiQuadDirect_S16_I ( |
+ OMX_S16 *pSrcDst, |
+ OMX_INT len, |
+ const OMX_S16 *pTaps, |
+ OMX_INT numBiquad, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIROne_BiQuadDirect_S16 (2.2.3.3.2) |
+ * |
+ * Description: |
+ * Single-sample biquad IIR filtering for 16-bit data type. This function |
+ * applies the direct form II biquad IIR cascade defined by the coefficient |
+ * vector pTaps to a single sample of input data. The internal accumulator |
+ * width must be at least 32 bits, and the result is saturated if the |
+ * operation produces a value outside the range of a signed 16-bit integer, |
+ * i.e., the output will saturate to 0x8000 (-32768) for a negative overflow |
+ * or 0x7fff (32767) for a positive overflow. The result is undefined if any |
+ * of the partially accumulated values exceeds the range of a signed 32-bit |
+ * integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * val - the single input sample to which the filter is |
+ * applied. |
+ * pTaps - pointer to the 6P-element vector that contains the combined |
+ * numerator and denominator filter coefficients from the biquad |
+ * cascade. Coefficient scaling and coefficient vector organization |
+ * should follow the conventions described above. The value of the |
+ * coefficient scalefactor exponent must be non-negative: (sfp>=0). |
+ * numBiquad - the number of biquads contained in the IIR filter cascade: |
+ * (P) |
+ * pDelayLine - pointer to the 2p-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: pResult, |
+ * pValResult, pTaps, or pDelayLine. |
+ * - numBiquad < 1 |
+ * - pTaps[3+n*6] < 0, for 0 <= n < numBiquad (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIROne_BiQuadDirect_S16 ( |
+ OMX_S16 val, |
+ OMX_S16 *pResult, |
+ const OMX_S16 *pTaps, |
+ OMX_INT numBiquad, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_IIROne_BiQuadDirect_S16_I (2.2.3.3.2) |
+ * |
+ * Description: |
+ * Single-sample biquad IIR filtering for 16-bit data type. This function |
+ * applies the direct form II biquad IIR cascade defined by the coefficient |
+ * vector pTaps to a single sample of input data. The internal accumulator |
+ * width must be at least 32 bits, and the result is saturated if the |
+ * operation produces a value outside the range of a signed 16-bit integer, |
+ * i.e., the output will saturate to 0x8000 (-32768) for a negative overflow |
+ * or 0x7fff (32767) for a positive overflow. The result is undefined if any |
+ * of the partially accumulated values exceeds the range of a signed 32-bit |
+ * integer. |
+ * |
+ * Input Arguments: |
+ * |
+ * pValResult - pointer to the single input sample to which the filter is |
+ * applied. |
+ * pTaps - pointer to the 6P-element vector that contains the combined |
+ * numerator and denominator filter coefficients from the biquad |
+ * cascade. Coefficient scaling and coefficient vector organization |
+ * should follow the conventions described above. The value of the |
+ * coefficient scalefactor exponent must be non-negative: (sfp>=0). |
+ * numBiquad - the number of biquads contained in the IIR filter cascade: |
+ * (P) |
+ * pDelayLine - pointer to the 2p-element filter memory buffer (state). The |
+ * user is responsible for allocation, initialization, and |
+ * deallocation. The filter memory elements are initialized to zero |
+ * in most applications. |
+ * |
+ * Output Arguments: |
+ * |
+ * pValResult - pointer to the filtered output sample |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: |
+ * pValResult, pTaps, or pDelayLine. |
+ * - numBiquad < 1 |
+ * - pTaps[3+n*6] < 0, for 0 <= n < numBiquad (negative scaling) |
+ * |
+ */ |
+OMXResult omxSP_IIROne_BiQuadDirect_S16_I ( |
+ OMX_S16 *pValResult, |
+ const OMX_S16 *pTaps, |
+ OMX_INT numBiquad, |
+ OMX_S32 *pDelayLine |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FilterMedian_S32 (2.2.3.4.1) |
+ * |
+ * Description: |
+ * This function computes the median over the region specified by the median |
+ * mask for the every element of the input array. The median outputs are |
+ * stored in the corresponding elements of the output vector. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrc - pointer to the input vector |
+ * len - number of elements contained in the input and output vectors (0 < |
+ * len < 65536) |
+ * maskSize - median mask size; if an even value is specified, the function |
+ * subtracts 1 and uses the odd value of the filter mask for median |
+ * filtering (0 < maskSize < 256) |
+ * |
+ * Output Arguments: |
+ * |
+ * pDst - pointer to the median-filtered output vector |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - one or more of the following pointers is NULL: pSrc, pDst. |
+ * - len < 0 |
+ * - maskSize < 1 or maskSize> 255 |
+ * OMX_StsSP_EvenMedianMaskSizeErr - even mask size replaced by odd mask |
+ * size |
+ * |
+ */ |
+OMXResult omxSP_FilterMedian_S32 ( |
+ const OMX_S32 *pSrc, |
+ OMX_S32 *pDst, |
+ OMX_INT len, |
+ OMX_INT maskSize |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FilterMedian_S32_I (2.2.3.4.1) |
+ * |
+ * Description: |
+ * This function computes the median over the region specified by the median |
+ * mask for the every element of the input array. The median outputs are |
+ * stored in the corresponding elements of the output vector. |
+ * |
+ * Input Arguments: |
+ * |
+ * pSrcDst - pointer to the input vector |
+ * len - number of elements contained in the input and output vectors (0 < |
+ * len < 65536) |
+ * maskSize - median mask size; if an even value is specified, the function |
+ * subtracts 1 and uses the odd value of the filter mask for median |
+ * filtering (0 < maskSize < 256) |
+ * |
+ * Output Arguments: |
+ * |
+ * pSrcDst - pointer to the median-filtered output vector |
+ * |
+ * Return Value: |
+ * |
+ * OMX_Sts_NoErr - no error |
+ * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the |
+ * following is true: |
+ * - pSrcDst is NULL. |
+ * - len < 0 |
+ * - maskSize < 1 or maskSize> 255 |
+ * OMX_StsSP_EvenMedianMaskSizeErr - even mask size replaced by odd mask |
+ * size |
+ * |
+ */ |
+OMXResult omxSP_FilterMedian_S32_I ( |
+ OMX_S32 *pSrcDst, |
+ OMX_INT len, |
+ OMX_INT maskSize |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInit_C_SC16 (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_SC16> is used to initialize the |
+ * specification structures for functions <FFTFwd_CToC_SC16_Sfs> and |
+ * <FFTInv_CToC_SC16_Sfs>. |
+ * |
+ * Memory for the specification structure *pFFTSpec |
+ * must be allocated prior to calling these functions and should be 4-byte |
+ * aligned for omxSP_FFTInit_C_SC16. |
+ * |
+ * The space required for *pFFTSpec, in bytes, can be |
+ * determined using <FFTGetBufSize_C_SC16>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; |
+ * valid in the range [0,12] |
+ * |
+ * 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 4-byte alignment |
+ * restrictions |
+ * - order < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_C_SC16 ( |
+ OMXFFTSpec_C_SC16 *pFFTSpec, |
+ OMX_INT order |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInit_C_SC32 (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_SC32> is used to initialize |
+ * the specification structures for the functions <FFTFwd_CToC_SC32_Sfs> and |
+ * <FFTInv_CToC_SC32_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_SC32. |
+ * |
+ * The space required for *pFFTSpec, in bytes, can be |
+ * determined using <FFTGetBufSize_C_SC32>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; valid in the range |
+ * [0,12] |
+ * |
+ * 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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_C_SC32 ( |
+ OMXFFTSpec_C_SC32 *pFFTSpec, |
+ 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 |
+ * [0,12] |
+ * |
+ * 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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_C_FC32( |
+ OMXFFTSpec_C_FC32* pFFTSpec, |
+ OMX_INT order |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInit_R_S16S32 (2.2.4.1.4) |
+ * |
+ * Description: |
+ * These functions initialize specification structures required for the real |
+ * FFT and IFFT functions. The function <FFTInit_R_S16S32> is used to |
+ * initialize the specification structures for functions |
+ * <FFTFwd_RToCCS_S16S32_Sfs> and <FFTInv_CCSToR_S32S16_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_S16S32>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; valid in the range |
+ * [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_R_S16S32( |
+ OMXFFTSpec_R_S16S32* pFFTFwdSpec, |
+ OMX_INT order |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInit_R_S32 (2.2.4.1.4) |
+ * |
+ * Description: |
+ * These functions initialize specification structures required for the real |
+ * FFT and IFFT functions. The function <FFTInit_R_S32> is used to initialize |
+ * the specification structures for functions <FFTFwd_RToCCS_S32_Sfs> |
+ * and <FFTInv_CCSToR_S32_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_S32>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; valid in the range |
+ * [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_R_S32 ( |
+ OMXFFTSpec_R_S32*pFFTFwdSpec, |
+ 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 |
+ * [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTInit_R_F32( |
+ OMXFFTSpec_R_F32* pFFTFwdSpec, |
+ OMX_INT order |
+); |
+ |
+/** |
+ * Function: omxSP_FFTGetBufSize_C_SC16 (2.2.4.1.6) |
+ * |
+ * 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_SC16> is used in conjunction with the 16-bit functions |
+ * <FFTFwd_CToC_SC16_Sfs> and <FFTInv_CToC_SC16_Sfs>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; valid in the range |
+ * [0,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; returned if one or more of the |
+ * following is true: |
+ * - pSize is NULL |
+ * - order < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_C_SC16 ( |
+ OMX_INT order, |
+ OMX_INT *pSize |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTGetBufSize_C_SC32 (2.2.4.1.6) |
+ * |
+ * 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_SC32> is used in conjunction with the 32-bit functions |
+ * <FFTFwd_CToC_SC32_Sfs> and <FFTInv_CToC_SC32_Sfs>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the desired block length; valid in the range |
+ * [0,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; returned if one or more of the |
+ * following is true: |
+ * - pSize is NULL |
+ * - order < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_C_SC32 ( |
+ OMX_INT order, |
+ 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 |
+ * [0,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; returned if one or more of the |
+ * following is true: |
+ * - pSize is NULL |
+ * - order < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_C_FC32( |
+ OMX_INT order, |
+ OMX_INT* pSize |
+); |
+ |
+ |
+/** |
+ * Function: omxSP_FFTGetBufSize_R_S16S32 (2.2.4.1.8) |
+ * |
+ * Description: |
+ * order These functions compute the size of the specification structure |
+ * required for the length 2^order real FFT and IFFT functions. The function |
+ * <FFTGetBufSize_R_S16S32> is used in conjunction with the 16-bit functions |
+ * <FFTFwd_RToCCS_S16S32_Sfs> and <FFTInv_CCSToR_S32S16_Sfs>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the length; valid in the range [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_R_S16S32( |
+ OMX_INT order, |
+ OMX_INT* pSize |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTGetBufSize_R_S32 (2.2.4.1.8) |
+ * |
+ * 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_S32> is used in conjunction with the 32-bit functions |
+ * <FFTFwd_RToCCS_S32_Sfs> and <FFTInv_CCSToR_S32_Sfs>. |
+ * |
+ * Input Arguments: |
+ * |
+ * order - base-2 logarithm of the length; valid in the range [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_R_S32 ( |
+ OMX_INT order, |
+ 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 [0,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 < 0 or order > 12 |
+ * |
+ */ |
+OMXResult omxSP_FFTGetBufSize_R_F32( |
+ OMX_INT order, |
+ OMX_INT* pSize |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTFwd_CToC_SC16_Sfs (2.2.4.2.2) |
+ * |
+ * Description: |
+ * Compute an FFT for a complex 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_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] = 2^(-scaleFactor) . 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 |
+ * scaleFactor - output scale factor; the range for is [0,16] |
+ * |
+ * 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>16 |
+ * |
+ */ |
+ |
+OMXResult omxSP_FFTFwd_CToC_SC16_Sfs ( |
+ const OMX_SC16 *pSrc, |
+ OMX_SC16 *pDst, |
+ const OMXFFTSpec_C_SC16 *pFFTSpec, |
+ 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) |
+ * |
+ * Description: |
+ * Compute an FFT for a complex 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_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] = 2^(-scaleFactor) . 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 |
+ * scaleFactor - output scale factor; the range is [0,32] |
+ * |
+ * 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_SC32_Sfs ( |
+ const OMX_SC32 *pSrc, |
+ OMX_SC32 *pDst, |
+ const OMXFFTSpec_C_SC32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInv_CToC_SC16_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 <= 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_C_sc32> or |
+ * <FFTInit_C_SC16>. The relationship between the input and output sequences |
+ * can be expressed in terms of the IDFT, 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. |
+ * |
+ * 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 |
+ * scaleFactor - scale factor of the output. Valid value is 0 |
+ * only. |
+ * |
+ * 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: |
+ * |
+ * Positive value - the shift scale that was performed inside |
+ * 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>16 |
+ * |
+ */ |
+OMXResult omxSP_FFTInv_CToC_SC16_Sfs ( |
+ const OMX_SC16 *pSrc, |
+ OMX_SC16 *pDst, |
+ const OMXFFTSpec_C_SC16 *pFFTSpec, |
+ 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 |
+); |
+ |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInv_CToC_SC32_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 <= 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_C_sc32> or |
+ * <FFTInit_C_SC16>. The relationship between the input and output sequences |
+ * can be expressed in terms of the IDFT, 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. |
+ * |
+ * 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 |
+ * scaleFactor - scale factor of the output. Valid range is [0,32]. |
+ * |
+ * 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_SC32_Sfs ( |
+ const OMX_SC32 *pSrc, |
+ OMX_SC32 *pDst, |
+ const OMXFFTSpec_C_SC32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTFwd_RToCCS_S16S32_Sfs (2.2.4.4.2) |
+ * |
+ * 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_S16S32>. |
+ * 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, 32] |
+ * |
+ * 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 |
+ * - scaleFactor<0 or scaleFactor >32 |
+ * |
+ */ |
+OMXResult omxSP_FFTFwd_RToCCS_S16S32_Sfs ( |
+ const OMX_S16 *pSrc, |
+ OMX_S32 *pDst, |
+ const OMXFFTSpec_R_S16S32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTFwd_RToCCS_S32_Sfs (2.2.4.4.2) |
+ * |
+ * 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_S32>. |
+ * 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, 32] |
+ * |
+ * 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 |
+ * - scaleFactor<0 or scaleFactor >32 |
+ * |
+ */ |
+OMXResult omxSP_FFTFwd_RToCCS_S32_Sfs ( |
+ const OMX_S32 *pSrc, |
+ OMX_S32 *pDst, |
+ const OMXFFTSpec_R_S32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+/** |
+ * 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 |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInv_CCSToR_S32S16_Sfs (2.2.4.4.4) |
+ * |
+ * 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_S16S32>. 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_S32S16_Sfs ( |
+ const OMX_S32 *pSrc, |
+ OMX_S16 *pDst, |
+ const OMXFFTSpec_R_S16S32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+ |
+ |
+/** |
+ * Function: omxSP_FFTInv_CCSToR_S32_Sfs (2.2.4.4.4) |
+ * |
+ * 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_S32>. 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,32] |
+ * |
+ * 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_S32_Sfs ( |
+ const OMX_S32 *pSrc, |
+ OMX_S32 *pDst, |
+ const OMXFFTSpec_R_S32 *pFFTSpec, |
+ OMX_INT scaleFactor |
+); |
+ |
+/** |
+ * 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 __cplusplus |
+} |
+#endif |
+ |
+#endif /** end of #define _OMXSP_H_ */ |
+ |
+/** EOF */ |
+ |