diff options
author | Android Chromium Automerger <chromium-automerger@android> | 2014-10-08 01:48:32 +0000 |
---|---|---|
committer | Android Chromium Automerger <chromium-automerger@android> | 2014-10-08 01:48:32 +0000 |
commit | c2daf13647f61d8561577485b0353c0418764dc3 (patch) | |
tree | eccaa2c3e40f98b69538ca69eb68d0c18da05804 | |
parent | affa3e17eb806ff55f0d3faacebca1a7feac5bb8 (diff) | |
parent | 6d58d90b0064c93cfb6b6f89c696cc53719ad831 (diff) | |
download | openmax_dl-c2daf13647f61d8561577485b0353c0418764dc3.tar.gz |
Merge third_party/openmax_dl from https://chromium.googlesource.com/external/webrtc/deps/third_party/openmax.git at 6d58d90b0064c93cfb6b6f89c696cc53719ad831
This commit was generated by merge_from_chromium.py.
Change-Id: I39019855640fd351dbb66e6d812eb7338230cef5
-rw-r--r-- | dl/dl.gyp | 211 | ||||
-rw-r--r-- | dl/sp/api/armSP.h | 26 | ||||
-rw-r--r-- | dl/sp/api/omxSP.h | 2593 | ||||
-rw-r--r-- | dl/sp/src/test/test_fft.gyp | 55 | ||||
-rw-r--r-- | dl/sp/src/test/test_fft_time.c | 49 | ||||
-rw-r--r-- | dl/sp/src/test/test_util_fft.c | 1 |
6 files changed, 1493 insertions, 1442 deletions
@@ -11,13 +11,42 @@ # Override this value to build with small float FFT tables 'big_float_fft%' : 1, }, + 'target_defaults': { + 'include_dirs': [ + '../', + ], + 'conditions' : [ + ['target_arch=="arm"', { + 'conditions' : [ + ['arm_neon==1', { + # Enable build-time NEON selection. + 'defines': ['DL_ARM_NEON',], + 'direct_dependent_settings': { + 'defines': ['DL_ARM_NEON',], + }, + }], + ['arm_neon==0 and OS=="android"', { + # Enable run-time NEON selection. + 'defines': ['DL_ARM_NEON_OPTIONAL',], + 'direct_dependent_settings': { + 'defines': ['DL_ARM_NEON_OPTIONAL',], + }, + }], + ], + }], + ['target_arch=="arm64"', { + # Enable build-time NEON selection. + 'defines': ['DL_ARM_NEON',], + 'direct_dependent_settings': { + 'defines': ['DL_ARM_NEON',], + }, + }], + ], + }, 'targets': [ { 'target_name': 'openmax_dl', 'type': 'static_library', - 'include_dirs': [ - '../', - ], 'direct_dependent_settings': { 'include_dirs': [ '../', @@ -29,7 +58,7 @@ 'sp/src/armSP_FFT_F32TwiddleTable.c', ], 'conditions' : [ - ['big_float_fft == 1', { + ['big_float_fft==1', { 'defines': [ 'BIG_FFT_TABLE', ], @@ -50,76 +79,80 @@ ], }], ['target_arch=="arm"', { - 'cflags!': [ - '-mfpu=vfpv3-d16', - ], - 'cflags': [ - # We enable Neon instructions even with arm_neon==0, to support - # runtime detection. - '-mfpu=neon', - ], - 'dependencies': [ - 'openmax_dl_armv7', - ], - 'sources': [ - # Common files that are used by both the NEON and non-NEON code. - 'api/armCOMM_s.h', - 'sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c', - 'sp/src/arm/omxSP_FFTGetBufSize_R_S16.c', - 'sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c', - 'sp/src/arm/omxSP_FFTInit_C_SC16.c', - 'sp/src/arm/omxSP_FFTInit_C_SC32.c', - 'sp/src/arm/omxSP_FFTInit_R_S16.c', - 'sp/src/arm/omxSP_FFTInit_R_S16S32.c', - 'sp/src/arm/omxSP_FFTInit_R_S32.c', + 'conditions': [ + ['arm_neon==0 or OS=="android"', { + 'dependencies': [ + 'openmax_dl_armv7', + ], + }], + ['arm_neon==1 or OS=="android"', { + 'cflags!': [ + '-mfpu=vfpv3-d16', + ], + 'cflags': [ + '-mfpu=neon', + ], + 'sources': [ + # Common files that are used by both the NEON and non-NEON code. + 'api/armCOMM_s.h', + 'sp/src/arm/omxSP_FFTGetBufSize_C_SC16.c', + 'sp/src/arm/omxSP_FFTGetBufSize_R_S16.c', + 'sp/src/arm/omxSP_FFTGetBufSize_R_S16S32.c', + 'sp/src/arm/omxSP_FFTInit_C_SC16.c', + 'sp/src/arm/omxSP_FFTInit_C_SC32.c', + 'sp/src/arm/omxSP_FFTInit_R_S16.c', + 'sp/src/arm/omxSP_FFTInit_R_S16S32.c', + 'sp/src/arm/omxSP_FFTInit_R_S32.c', - # Complex 32-bit fixed-point FFT. - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S', - # Real 32-bit fixed-point FFT - 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S', - # Complex 16-bit fixed-point FFT - 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S', - # Real 16-bit fixed-point FFT - 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S', - # Complex floating-point FFT - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S', - 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S', - # Real floating-point FFT - 'sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S', - 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S', - 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S', + # Complex 32-bit fixed-point FFT. + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix2_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix4_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC32_Radix8_fs_unsafe_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC32_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC32_Sfs_s.S', + # Real 32-bit fixed-point FFT + 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S32_preTwiddleRadix2_unsafe_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S32_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32_Sfs_s.S', + # Complex 16-bit fixed-point FFT + 'sp/src/arm/neon/armSP_FFTInv_CCSToR_S16_preTwiddleRadix2_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_ps_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix2_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix4_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_SC16_Radix8_fs_unsafe_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_CToC_SC16_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CToC_SC16_Sfs_s.S', + # Real 16-bit fixed-point FFT + 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S16_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_S16S32_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_S32S16_Sfs_s.S', + # Complex floating-point FFT + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_fs_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_ls_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix2_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix4_unsafe_s.S', + 'sp/src/arm/neon/armSP_FFT_CToC_FC32_Radix8_fs_unsafe_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CToC_FC32_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_CToC_FC32_Sfs_s.S', + # Real floating-point FFT + 'sp/src/arm/neon/armSP_FFTInv_CCSToR_F32_preTwiddleRadix2_unsafe_s.S', + 'sp/src/arm/neon/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S', + 'sp/src/arm/neon/omxSP_FFTInv_CCSToR_F32_Sfs_s.S', + ], + }], ], }], ['target_arch=="ia32" or target_arch=="x64"', { @@ -210,24 +243,10 @@ # standalone. Applications must link with openmax_dl. 'target_name': 'openmax_dl_armv7', 'type': 'static_library', - 'includes': [ - '../../../build/android/cpufeatures.gypi', - ], - 'include_dirs': [ - '../', - ], 'cflags!': [ '-mfpu=neon', ], - 'link_settings' : { - 'libraries': [ - # To get the __android_log_print routine - '-llog', - ], - }, 'sources': [ - # Detection routine - 'sp/src/arm/detect.c', # Complex floating-point FFT 'sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', 'sp/src/arm/armv7/armSP_FFT_CToC_FC32_Radix2_fs_unsafe_s.S', @@ -241,6 +260,24 @@ 'sp/src/arm/armv7/omxSP_FFTFwd_RToCCS_F32_Sfs_s.S', 'sp/src/arm/armv7/omxSP_FFTInv_CCSToR_F32_Sfs_s.S', ], + 'conditions': [ + ['OS=="android"', { + # We only do run-time NEON detection on Android. + 'includes': [ + '../../../build/android/cpufeatures.gypi', + ], + 'link_settings' : { + 'libraries': [ + # To get the __android_log_print routine + '-llog', + ], + }, + 'sources': [ + # Detection routine + 'sp/src/arm/detect.c', + ], + }], + ], }, ], }], diff --git a/dl/sp/api/armSP.h b/dl/sp/api/armSP.h index cf17ec5..2592679 100644 --- a/dl/sp/api/armSP.h +++ b/dl/sp/api/armSP.h @@ -12,16 +12,16 @@ */ /** - * + * * File Name: armSP.h * OpenMAX DL: v1.0.2 * Last Modified Revision: 7014 * Last Modified Date: Wed, 01 Aug 2007 - * + * * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. - * - * - * + * + * + * * File: armSP.h * Brief: Declares API's/Basic Data types used across the OpenMAX Signal Processing domain * @@ -41,35 +41,35 @@ extern "C" { extern OMX_S32 armSP_FFT_S32TwiddleTable[1026]; extern OMX_F32 armSP_FFT_F32TwiddleTable[]; -typedef struct ARMsFFTSpec_SC32_Tag +typedef struct ARMsFFTSpec_SC32_Tag { OMX_U32 N; - OMX_U16 *pBitRev; + OMX_U16 *pBitRev; OMX_SC32 *pTwiddle; OMX_SC32 *pBuf; }ARMsFFTSpec_SC32; -typedef struct ARMsFFTSpec_SC16_Tag +typedef struct ARMsFFTSpec_SC16_Tag { OMX_U32 N; - OMX_U16 *pBitRev; + OMX_U16 *pBitRev; OMX_SC16 *pTwiddle; OMX_SC16 *pBuf; }ARMsFFTSpec_SC16; -typedef struct ARMsFFTSpec_R_SC32_Tag +typedef struct ARMsFFTSpec_R_SC32_Tag { OMX_U32 N; - OMX_U16 *pBitRev; + OMX_U16 *pBitRev; OMX_SC32 *pTwiddle; OMX_S32 *pBuf; }ARMsFFTSpec_R_SC32; -typedef struct ARMsFFTSpec_R_SC16_Tag +typedef struct ARMsFFTSpec_R_SC16_Tag { OMX_U32 N; - OMX_U16 *pBitRev; + OMX_U16 *pBitRev; OMX_SC16 *pTwiddle; OMX_S16 *pBuf; } ARMsFFTSpec_R_SC16; diff --git a/dl/sp/api/omxSP.h b/dl/sp/api/omxSP.h index d056fb9..2827379 100644 --- a/dl/sp/api/omxSP.h +++ b/dl/sp/api/omxSP.h @@ -4,27 +4,27 @@ * * 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 + * 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 + * + * 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. + * + * Khronos and OpenMAX are trademarks of the Khronos Group Inc. * */ @@ -53,26 +53,26 @@ extern "C" { * 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: + * 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 + * + * 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 + * + * 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 + * + * 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 ( @@ -87,25 +87,25 @@ OMXResult omxSP_Copy_S16 ( * 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. + * 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 + * + * 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. + * + * The dot product result Note: this function returns the actual result + * rather than the standard OMXError. * */ OMX_S32 omxSP_DotProd_S16 ( @@ -120,30 +120,30 @@ OMX_S32 omxSP_DotProd_S16 ( * 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. + * 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 + * + * 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. + * + * The dot product result Note: This function returns the actual result + * rather than the standard OMXError. * */ OMX_S32 omxSP_DotProd_S16_Sfs ( @@ -159,30 +159,30 @@ OMX_S32 omxSP_DotProd_S16_Sfs ( * 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. + * 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. + * 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) + * + * pSrc - pointer to the input vector + * len - number of elements contained in the input and output + * vectors (0 < len < 65536) * * Output Arguments: - * - * none + * + * none * * Return Value: - * - * Maximum exponent that may be used in scaling + * + * Maximum exponent that may be used in scaling * */ OMX_INT omxSP_BlockExp_S16 ( @@ -196,30 +196,30 @@ OMX_INT omxSP_BlockExp_S16 ( * 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. + * 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) + * + * pSrc - pointer to the input vector + * len - number of elements contained in the input and output + * vectors (0 < len < 65536) * * Output Arguments: - * - * none + * + * none * * Return Value: - * - * Maximum exponent that may be used in scaling + * + * Maximum exponent that may be used in scaling * */ OMX_INT omxSP_BlockExp_S32 ( @@ -233,59 +233,59 @@ OMX_INT omxSP_BlockExp_S32 ( * 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. + * 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. + * 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 + * + * 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. + * -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 + * + * 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). + * + * 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 ( @@ -304,58 +304,58 @@ OMXResult omxSP_FIR_Direct_S16 ( * 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. + * 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. + * 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 + * + * 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. + * -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 + * + * 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). + * + * 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 ( @@ -373,59 +373,59 @@ OMXResult omxSP_FIR_Direct_S16_I ( * 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 + * 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. + * 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 + * + * 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. + * -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 + * + * 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). + * + * 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 ( @@ -445,59 +445,59 @@ OMXResult omxSP_FIR_Direct_S16_Sfs ( * 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 + * 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. + * 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 + * + * 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. + * -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 + * + * 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). + * + * 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 ( @@ -516,53 +516,53 @@ OMXResult omxSP_FIR_Direct_S16_ISfs ( * 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. + * 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 + * 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 + * + * 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 + * 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. + * -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 + * + * 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) + * + * 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 ( @@ -580,53 +580,53 @@ OMXResult omxSP_FIROne_Direct_S16 ( * 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. + * 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 + * 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 + * + * 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. + * -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 + * + * 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) + * + * 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 ( @@ -643,54 +643,54 @@ OMXResult omxSP_FIROne_Direct_S16_I ( * 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. + * 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 + * + * 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 + * -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 + * + * 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) + * + * 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 ( @@ -709,54 +709,54 @@ OMXResult omxSP_FIROne_Direct_S16_Sfs ( * 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. + * 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 + * + * 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 + * -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 + * + * 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) + * + * 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 ( @@ -774,54 +774,54 @@ OMXResult omxSP_FIROne_Direct_S16_ISfs ( * 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. + * 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. + * + * 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 + * + * 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 + * + * 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 ( @@ -839,53 +839,53 @@ OMXResult omxSP_IIR_Direct_S16 ( * 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. + * 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. + * + * 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 + * + * 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 + * + * 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 ( @@ -902,48 +902,48 @@ OMXResult omxSP_IIR_Direct_S16_I ( * 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. + * 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. + * + * 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 + * + * 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) + * + * 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 ( @@ -960,48 +960,48 @@ OMXResult omxSP_IIROne_Direct_S16 ( * 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. + * 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 + * + * 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. + * 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 + * + * 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) + * + * 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 ( @@ -1017,47 +1017,47 @@ OMXResult omxSP_IIROne_Direct_S16_I ( * 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. + * 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. + * + * 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 + * + * 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) + * + * 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 ( @@ -1075,47 +1075,47 @@ OMXResult omxSP_IIR_BiQuadDirect_S16 ( * 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. + * 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. + * + * 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 + * + * 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) + * + * 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 ( @@ -1132,45 +1132,45 @@ OMXResult omxSP_IIR_BiQuadDirect_S16_I ( * 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. + * 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. + * + * 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 + * + * 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) + * + * 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 ( @@ -1187,45 +1187,45 @@ OMXResult omxSP_IIROne_BiQuadDirect_S16 ( * 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. + * 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. + * + * 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 + * + * 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: + * + * 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) + * pValResult, pTaps, or pDelayLine. + * - numBiquad < 1 + * - pTaps[3+n*6] < 0, for 0 <= n < numBiquad (negative scaling) * */ OMXResult omxSP_IIROne_BiQuadDirect_S16_I ( @@ -1241,33 +1241,33 @@ OMXResult omxSP_IIROne_BiQuadDirect_S16_I ( * 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. + * 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) + * + * 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 + * + * 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 + * + * 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 ( @@ -1283,33 +1283,33 @@ OMXResult omxSP_FilterMedian_S32 ( * 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. + * 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) + * + * 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 + * + * 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 + * + * 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 ( @@ -1324,36 +1324,36 @@ OMXResult omxSP_FilterMedian_S32_I ( * 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 + * 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. + * 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>. + * 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] + * + * order - base-2 logarithm of the desired block length; + * valid in the range [0,12] * * Output Arguments: - * - * pFFTSpec - pointer to initialized specification structure + * + * 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 + * + * 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 ( @@ -1367,36 +1367,36 @@ OMXResult omxSP_FFTInit_C_SC16 ( * 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 + * 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. + * 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>. + * 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] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [0,12] * * Output Arguments: - * - * pFFTSpec - pointer to initialized specification structure + * + * 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 + * + * 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 ( @@ -1408,35 +1408,35 @@ OMXResult omxSP_FFTInit_C_SC32 ( * 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 + * 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. + * 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>. + * 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 - * [1,15] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [1,15] * * Output Arguments: - * - * pFFTSpec - pointer to initialized specification structure + * + * 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 + * + * 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 < 1 or order > 15 * */ @@ -1451,33 +1451,33 @@ OMXResult omxSP_FFTInit_C_FC32( * 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 + * 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>. + * + * 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] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [0,12] * * Output Arguments: - * - * pFFTFwdSpec - pointer to the initialized specification structure + * + * 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 + * + * 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( @@ -1491,34 +1491,34 @@ OMXResult omxSP_FFTInit_R_S16S32( * Function: omxSP_FFTInit_R_S16 * * Description: - * These functions initialize specification structures required for the real - * FFT and IFFT functions. The function <FFTInit_R_S16> is used + * These functions initialize specification structures required for the real + * FFT and IFFT functions. The function <FFTInit_R_S16> is used * to initialize the specification structures for functions * <FFTFwd_RToCCS_S16_Sfs> and <FFTInv_CCSToR_S16_Sfs>. * * Memory for *pFFTFwdSpec must be allocated before calling these functions - * and should be 8-byte aligned. + * and should be 8-byte aligned. * - * The number of bytes required for *pFFTFwdSpec can be - * determined using <FFTGetBufSize_R_S16>. + * The number of bytes required for *pFFTFwdSpec can be + * determined using <FFTGetBufSize_R_S16>. * * Input Arguments: - * - * order - base-2 logarithm of the desired block length; valid in the range - * [1,12] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [1,12] * * Output Arguments: - * - * pFFTFwdSpec - pointer to the initialized specification structure + * + * 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 < 1 or order > 12 + * + * 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 < 1 or order > 12 * */ OMXResult omxSP_FFTInit_R_S16 ( @@ -1530,34 +1530,34 @@ OMXResult omxSP_FFTInit_R_S16 ( * 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>. + * 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. + * and should be 8-byte aligned. * - * The number of bytes required for *pFFTFwdSpec can be - * determined using <FFTGetBufSize_R_S32>. + * 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] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [0,12] * * Output Arguments: - * - * pFFTFwdSpec - pointer to the initialized specification structure + * + * 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 + * + * 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 ( @@ -1569,33 +1569,33 @@ OMXResult omxSP_FFTInit_R_S32 ( * 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>. + * 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. + * and should be 8-byte aligned. * - * The number of bytes required for *pFFTFwdSpec can be - * determined using <FFTGetBufSize_R_F32>. + * 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 - * [1,15] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [1,15] * * Output Arguments: - * - * pFFTFwdSpec - pointer to the initialized specification structure + * + * 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 + * + * 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 < 1 or order > 15 * */ @@ -1608,28 +1608,28 @@ OMXResult omxSP_FFTInit_R_F32( * 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>. + * 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] + * + * 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 + * + * 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 + * + * 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 ( @@ -1643,28 +1643,28 @@ OMXResult omxSP_FFTGetBufSize_C_SC16 ( * 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>. + * 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] + * + * 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 + * + * 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 + * + * 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 ( @@ -1676,28 +1676,28 @@ OMXResult omxSP_FFTGetBufSize_C_SC32 ( * 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>. + * 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 - * [1,15] + * + * order - base-2 logarithm of the desired block length; valid in the range + * [1,15] * * Output Arguments: - * - * pSize - pointer to the number of bytes required for the specification - * structure + * + * 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 < 1 or order > 15 + * + * OMX_Sts_NoErr - no error + * OMX_Sts_BadArgErr - bad arguments; returned if one or more of the + * following is true: + * - pSize is NULL + * - order < 1 or order > 15 * */ OMXResult omxSP_FFTGetBufSize_C_FC32( @@ -1710,27 +1710,27 @@ OMXResult omxSP_FFTGetBufSize_C_FC32( * 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>. + * 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] + * + * 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 + * + * 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 + * + * 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( @@ -1743,28 +1743,28 @@ OMXResult omxSP_FFTGetBufSize_R_S16S32( * Function: omxSP_FFTGetBufSize_R_S16 * * 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_S16> is used in conjunction with the 16-bit - * functions <FFTFwd_RToCCS_S16_Sfs> and <FFTInv_CCSToR_S16_Sfs>. + * These functions compute the size of the specification structure + * required for the length 2^order real FFT and IFFT functions. The function + * <FFTGetBufSize_R_S16> is used in conjunction with the 16-bit + * functions <FFTFwd_RToCCS_S16_Sfs> and <FFTInv_CCSToR_S16_Sfs>. * * Input Arguments: - * + * * order - base-2 logarithm of the length; valid in the range * [1,12] * * Output Arguments: - * - * pSize - pointer to the number of bytes required for the specification - * structure + * + * 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 < 1 or order > 12 + * + * 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 < 1 or order > 12 * */ OMXResult omxSP_FFTGetBufSize_R_S16 ( @@ -1776,27 +1776,27 @@ OMXResult omxSP_FFTGetBufSize_R_S16 ( * 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>. + * 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] + * + * 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 + * + * 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 + * + * 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 ( @@ -1808,26 +1808,26 @@ OMXResult omxSP_FFTGetBufSize_R_S32 ( * 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>. + * 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 [1,15] + * + * order - base-2 logarithm of the length; valid in the range [1,15] * * Output Arguments: - * - * pSize - pointer to the number of bytes required for the specification - * structure + * + * 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 + * + * 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 < 1 or order > 15 * */ @@ -1842,37 +1842,37 @@ OMXResult omxSP_FFTGetBufSize_R_F32( * 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., + * 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] + * 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. + * 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 + * + * 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 * */ @@ -1895,38 +1895,38 @@ OMXResult omxSP_FFTFwd_CToC_SC16_Sfs_neon ( * 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., + * 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] + * 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. + * 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 + * + * 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 ( @@ -1943,38 +1943,38 @@ OMXResult omxSP_FFTFwd_CToC_SC32_Sfs ( * * 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.: + * 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 + * 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,16]. * * Output Arguments: - * order - * pDst - pointer to the complex-valued output signal, of length 2^order; - * must be aligned on a 32-byte boundary. + * 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 + * 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 ( @@ -1999,36 +1999,36 @@ OMXResult omxSP_FFTInv_CToC_SC16_Sfs_neon ( * * 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.: + * 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]. + * 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. + * 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 + * + * 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 * */ @@ -2046,45 +2046,45 @@ OMXResult omxSP_FFTInv_CToC_SC32_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_S16S32>. - * The relationship between the input and output sequences + * 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: + * 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 + * 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. + * 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] + * 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. + * 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 + * + * 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 ( @@ -2154,45 +2154,45 @@ OMXResult omxSP_FFTFwd_RToCCS_S16_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_S32>. - * The relationship between the input and output sequences + * 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: + * 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 + * 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. + * 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] + * 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. + * 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 + * + * 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 ( @@ -2206,13 +2206,13 @@ OMXResult omxSP_FFTFwd_RToCCS_S32_Sfs ( * Function: omxSP_FFTFwd_CToC_FC32_Sfs (2.2.4.2.2) * * Description: - * Compute an FFT for a complex signal of length of 2^order, - * where 0 <= order <= 15. - * 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., + * Compute an FFT for a complex signal of length of 2^order, + * where 0 <= order <= 15. + * 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] = SUM[n=0...N-1]x[n].e^(-jnk.2.pi/N) * k = 0,1,2,..., N-1 @@ -2220,23 +2220,23 @@ OMXResult omxSP_FFTFwd_RToCCS_S32_Sfs ( * * 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 + * 2^order; must be aligned on a 32 byte boundary. + * pFFTSpec - pointer to the preallocated and initialized specification + * structure * * Output Arguments: * pDst - pointer to the complex-valued output vector, of length 2^order; - * must be aligned on an 32-byte boundary. + * 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 + * + * 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_FC32_Sfs ( @@ -2244,16 +2244,6 @@ OMXResult omxSP_FFTFwd_CToC_FC32_Sfs ( OMX_FC32 *pDst, const OMXFFTSpec_C_FC32 *pFFTSpec ); -#ifdef __arm__ -/* - * Non-NEON version - */ -OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp ( - const OMX_FC32 *pSrc, - OMX_FC32 *pDst, - const OMXFFTSpec_C_FC32 *pFFTSpec -); -#endif /** * Function: omxSP_FFTFwd_RToCCS_F32_Sfs @@ -2270,11 +2260,11 @@ OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp ( * 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: + * 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 + * 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 @@ -2282,18 +2272,18 @@ OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp ( * 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 + * 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. + * 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_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 @@ -2306,67 +2296,43 @@ OMXResult omxSP_FFTFwd_RToCCS_F32_Sfs( const OMXFFTSpec_R_F32* pFFTSpec ); -#ifdef __arm__ -/* - * Non-NEON version of omxSP_FFTFwd_RToCCS_F32_Sfs - */ -OMXResult omxSP_FFTFwd_RToCCS_F32_Sfs_vfp( - const OMX_F32* pSrc, - OMX_F32* pDst, - const OMXFFTSpec_R_F32* pFFTSpec -); - -/* - * Just like omxSP_FFTFwd_RToCCS_F32_Sfs, but automatically detects - * whether NEON is available or not and chooses the appropriate - * routine. - */ -extern OMXResult (*omxSP_FFTFwd_RToCCS_F32)( - const OMX_F32* pSrc, - OMX_F32* pDst, - const OMXFFTSpec_R_F32* pFFTSpec -); -#else -#define omxSP_FFTFwd_RToCCS_F32 omxSP_FFTFwd_RToCCS_F32_Sfs -#endif - /** * 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: + * 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 + * 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. + * 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 + * 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. + * 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 + * + * 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 * */ @@ -2430,39 +2396,39 @@ OMXResult omxSP_FFTInv_CCSToR_S16_Sfs ( * 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: + * 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 + * 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. + * 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] + * 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. + * 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 + * + * 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 * */ @@ -2489,24 +2455,24 @@ OMXResult omxSP_FFTInv_CCSToR_S32_Sfs ( * 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 + * 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 * * Output Arguments: - * order - * pDst - pointer to the complex-valued output signal, of length 2^order; - * must be aligned on a 32-byte boundary. + * 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 + * + * 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 * */ @@ -2515,30 +2481,20 @@ OMXResult omxSP_FFTInv_CToC_FC32_Sfs ( OMX_FC32 *pDst, const OMXFFTSpec_C_FC32 *pFFTSpec ); -#ifdef __arm__ -/* - * Non-NEON version - */ -OMXResult omxSP_FFTInv_CToC_FC32_Sfs_vfp ( - const OMX_FC32 *pSrc, - OMX_FC32 *pDst, - const OMXFFTSpec_C_FC32 *pFFTSpec -); -#endif /** * 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: + * 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 + * 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 @@ -2557,13 +2513,13 @@ OMXResult omxSP_FFTInv_CToC_FC32_Sfs_vfp ( * 2^order ; must be aligned on a 32-byte boundary. * * Return Value: - * - * OMX_Sts_NoErr - no error - + * + * 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 + * - pSrc, pDst, or pFFTSpec is NULL + * - pSrc or pDst is not aligned on a 32-byte boundary * - scaleFactor<0 or scaleFactor >32 * */ @@ -2573,28 +2529,67 @@ OMXResult omxSP_FFTInv_CCSToR_F32_Sfs( const OMXFFTSpec_R_F32* pFFTSpec ); -#ifdef __arm__ /* - * Non-NEON version of omxSP_FFTInv_CCSToR_F32_Sfs - */ -OMXResult omxSP_FFTInv_CCSToR_F32_Sfs_vfp( + * This block sets things up appropriately for run-time or build-time selection + * of NEON implementations. + */ +#if defined(__arm__) || defined(__aarch64__) +/* + * Generic versions. Just like their *_Sfs counterparts, but automatically + * detect whether NEON is available or not and choose the appropriate routine. + */ +#if defined(DL_ARM_NEON_OPTIONAL) +extern OMXResult (*omxSP_FFTFwd_RToCCS_F32)( const OMX_F32* pSrc, OMX_F32* pDst, const OMXFFTSpec_R_F32* pFFTSpec ); - -/* - * Just like omxSP_FFTInv_CCSToR_F32_Sfs, but automatically detects - * whether NEON is available or not and chooses the appropriate - * routine. - */ extern OMXResult (*omxSP_FFTInv_CCSToR_F32)( const OMX_F32* pSrc, OMX_F32* pDst, const OMXFFTSpec_R_F32* pFFTSpec); +#elif defined(DL_ARM_NEON) +/* Build-time NEON selection. */ +#define omxSP_FFTFwd_RToCCS_F32 omxSP_FFTFwd_RToCCS_F32_Sfs +#define omxSP_FFTInv_CCSToR_F32 omxSP_FFTInv_CCSToR_F32_Sfs #else -#define omxSP_FFTInv_CCSToR_F32 omxSP_FFTInv_CCSToR_F32_Sfs -#endif +/* Build-time non-NEON selection. */ +#define omxSP_FFTFwd_RToCCS_F32 omxSP_FFTFwd_CCSToR_F32_vfp +#define omxSP_FFTInv_CCSToR_F32 omxSP_FFTInv_CCSToR_F32_vfp +#endif /* defined(DL_ARM_NEON_OPTIONAL) */ + +#if defined(DL_ARM_NEON_OPTIONAL) || !defined(DL_ARM_NEON) +/* Non-NEON versions. */ +OMXResult omxSP_FFTFwd_RToCCS_F32_Sfs_vfp( + const OMX_F32* pSrc, + OMX_F32* pDst, + const OMXFFTSpec_R_F32* pFFTSpec +); + +OMXResult omxSP_FFTInv_CCSToR_F32_Sfs_vfp( + const OMX_F32* pSrc, + OMX_F32* pDst, + const OMXFFTSpec_R_F32* pFFTSpec +); + +OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp ( + const OMX_FC32 *pSrc, + OMX_FC32 *pDst, + const OMXFFTSpec_C_FC32 *pFFTSpec +); + +OMXResult omxSP_FFTInv_CToC_FC32_Sfs_vfp ( + const OMX_FC32 *pSrc, + OMX_FC32 *pDst, + const OMXFFTSpec_C_FC32 *pFFTSpec +); +#endif /* defined(DL_ARM_NEON_OPTIONAL) || !defined(DL_ARM_NEON) */ + +#else +/* Build-time non-ARM selection. */ +#define omxSP_FFTInv_RToCCS_F32 omxSP_FFTInv_RToCCS_F32_Sfs +#define omxSP_FFTInv_CCSToR_F32 omxSP_FFTInv_CCSToR_F32_Sfs +#endif /* defined(__arm__) || defined(__aarch64__) */ #ifdef __cplusplus } diff --git a/dl/sp/src/test/test_fft.gyp b/dl/sp/src/test/test_fft.gyp index c1be018..859ea46 100644 --- a/dl/sp/src/test/test_fft.gyp +++ b/dl/sp/src/test/test_fft.gyp @@ -151,6 +151,11 @@ 'dependencies!' : [ 'test_utilities' ], + 'link_settings': { + 'libraries': [ + '-lm', + ], + }, 'sources' : [ 'aligned_ptr.c', 'compare.c', @@ -173,7 +178,7 @@ 'support/float_rfft_neon.c', ], }], - ['target_arch == "ia32"', { + ['target_arch == "ia32" or target_arch == "x64"', { 'sources': [ 'support/float_rfft_x86.c', ], @@ -193,7 +198,7 @@ 'test_fft_time.c', ], 'conditions': [ - ['target_arch == "ia32" or target_arch == "arm64" or target_arch == "mipsel"', { + ['target_arch == "ia32" or target_arch == "x64" or target_arch == "arm64" or target_arch == "mipsel"', { 'defines': [ # Timing test only for float FFTs on x86 and arm64 and MIPSEL. 'FLOAT_ONLY', @@ -207,32 +212,44 @@ 'type': 'none', 'conditions' : [ ['target_arch == "arm"', { - # Supported test programs for ARM - 'dependencies': [ - 'test_fft16', - 'test_fft32', - 'test_float_fft', - 'test_float_rfft', - 'test_rfft16_s32', - 'test_rfft16_s16', - 'test_rfft32', - # Non-Neon tests - 'test_fft_time_armv7', - 'test_float_fft_armv7', - 'test_float_rfft_armv7', - # Tests with detection - 'test_float_rfft_detect', + 'conditions' : [ + ['arm_neon==1 or OS=="android"', { + # NEON tests. + 'dependencies': [ + 'test_fft16', + 'test_fft32', + 'test_float_fft', + 'test_float_rfft', + 'test_rfft16_s32', + 'test_rfft16_s16', + 'test_rfft32', + ], + }], + ['arm_neon==0 or OS=="android"', { + # Non-NEON tests. + 'dependencies': [ + 'test_fft_time_armv7', + 'test_float_fft_armv7', + 'test_float_rfft_armv7', + ], + }], + ['OS=="android"', { + # Tests with detection. + 'dependencies': [ + 'test_float_rfft_detect', + ], + }], ], }], ['target_arch == "arm64"', { - # Supported test programs for ARM64 + # Supported test programs for ARM64. 'dependencies': [ 'test_float_fft', ], }], ], 'dependencies' : [ - # All architectures must support at least the float rfft test + # All architectures must support at least the float rfft test. 'test_float_rfft', 'test_fft_time', ], diff --git a/dl/sp/src/test/test_fft_time.c b/dl/sp/src/test/test_fft_time.c index 6154228..beaa895 100644 --- a/dl/sp/src/test/test_fft_time.c +++ b/dl/sp/src/test/test_fft_time.c @@ -11,6 +11,7 @@ #include <math.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <sys/resource.h> #include <sys/time.h> #include <unistd.h> @@ -609,11 +610,11 @@ void TimeOneSC32FFT(int count, int fft_log_size, float signal_value, GetUserTime(&start_time); for (k = 0; k < count; ++k) { for (n = 0; n < fft_size; ++n) { - if (fabs(x[n].Re) > factor) { - factor = fabs(x[n].Re); + if (abs(x[n].Re) > factor) { + factor = abs(x[n].Re); } - if (fabs(x[n].Im) > factor) { - factor = fabs(x[n].Im); + if (abs(x[n].Im) > factor) { + factor = abs(x[n].Im); } } @@ -653,11 +654,11 @@ void TimeOneSC32FFT(int count, int fft_log_size, float signal_value, GetUserTime(&start_time); for (k = 0; k < count; ++k) { for (n = 0; n < fft_size; ++n) { - if (fabs(x[n].Re) > factor) { - factor = fabs(x[n].Re); + if (abs(x[n].Re) > factor) { + factor = abs(x[n].Re); } - if (fabs(x[n].Im) > factor) { - factor = fabs(x[n].Im); + if (abs(x[n].Im) > factor) { + factor = abs(x[n].Im); } } factor = ((1 << 18) - 1) / factor; @@ -791,11 +792,11 @@ void TimeOneSC16FFT(int count, int fft_log_size, float signal_value, GetUserTime(&start_time); for (k = 0; k < count; ++k) { for (n = 0; n < fft_size; ++n) { - if (fabs(x[n].Re) > factor) { - factor = fabs(x[n].Re); + if (abs(x[n].Re) > factor) { + factor = abs(x[n].Re); } - if (fabs(x[n].Im) > factor) { - factor = fabs(x[n].Im); + if (abs(x[n].Im) > factor) { + factor = abs(x[n].Im); } } @@ -835,11 +836,11 @@ void TimeOneSC16FFT(int count, int fft_log_size, float signal_value, GetUserTime(&start_time); for (k = 0; k < count; ++k) { for (n = 0; n < fft_size; ++n) { - if (fabs(x[n].Re) > factor) { - factor = fabs(x[n].Re); + if (abs(x[n].Re) > factor) { + factor = abs(x[n].Re); } - if (fabs(x[n].Im) > factor) { - factor = fabs(x[n].Im); + if (abs(x[n].Im) > factor) { + factor = abs(x[n].Im); } } factor = ((1 << 15) - 1) / factor; @@ -1013,8 +1014,8 @@ void TimeOneRFFT16(int count, int fft_log_size, float signal_value, * Spend some time computing the max of the signal, and then scaling it. */ for (n = 0; n < fft_size; ++n) { - if (fabs(xr[n]) > factor) { - factor = fabs(xr[n]); + if (abs(xr[n]) > factor) { + factor = abs(xr[n]); } } @@ -1080,8 +1081,8 @@ void TimeOneRFFT16(int count, int fft_log_size, float signal_value, * Spend some time scaling the FFT signal to fixed point. */ for (n = 0; n < fft_size; ++n) { - if (fabs(yrTrue[n]) > factor) { - factor = fabs(yrTrue[n]); + if (abs(yrTrue[n]) > factor) { + factor = abs(yrTrue[n]); } } for (n = 0; n < fft_size; ++n) { @@ -1282,8 +1283,8 @@ void TimeOneRFFT32(int count, int fft_log_size, float signal_value, * Spend some time computing the max of the signal, and then scaling it. */ for (n = 0; n < fft_size; ++n) { - if (fabs(xr[n]) > factor) { - factor = fabs(xr[n]); + if (abs(xr[n]) > factor) { + factor = abs(xr[n]); } } @@ -1331,8 +1332,8 @@ void TimeOneRFFT32(int count, int fft_log_size, float signal_value, * Spend some time scaling the FFT signal to fixed point. */ for (n = 0; n < fft_size + 2; ++n) { - if (fabs(yrTrue[n]) > factor) { - factor = fabs(yrTrue[n]); + if (abs(yrTrue[n]) > factor) { + factor = abs(yrTrue[n]); } } for (n = 0; n < fft_size + 2; ++n) { diff --git a/dl/sp/src/test/test_util_fft.c b/dl/sp/src/test/test_util_fft.c index 3deb041..025ee8d 100644 --- a/dl/sp/src/test/test_util_fft.c +++ b/dl/sp/src/test/test_util_fft.c @@ -10,6 +10,7 @@ #include "dl/sp/src/test/test_util.h" #include "dl/sp/src/test/compare.h" +#include "dl/sp/src/test/gensig.h" /* * Test results from running either forward or inverse FFT tests |