webrtc / deps / third_party / openmax / 048e632be7693f6198bfdd54130a0220a2ccb5ab / . / dl / sp / api / omxSP.h

/* | |

* Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | |

* | |

* Use of this source code is governed by a BSD-style license | |

* that can be found in the LICENSE file in the root of the source | |

* tree. An additional intellectual property rights grant can be found | |

* in the file PATENTS. All contributing project authors may | |

* be found in the AUTHORS file in the root of the source tree. | |

* | |

* This file was originally licensed as follows. It has been | |

* relicensed with permission from the copyright holders. | |

*/ | |

/** | |

* 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 */ | |