[fpc-devel] Staticaly link C/C++ library (.lib) into FreePascal on Windows
LacaK
lacak at zoznam.sk
Thu Mar 16 12:12:56 CET 2017
>> Then I get:
>> test_IPP.lpr(17,1) Error: undefined reference to `ippGetLibVersion'
>> (I have tried also: _ippGetLibVersion, _ippGetLibVersion at 0 ...)
>
> I've downloaded the IPP libs and did some tests to make sure that
> static linking is possible.
Thank you very much for your effort!
You use cdecl, but in header files is stated stdcall for Windows, isn't
it problem ?
Besides that it does not work for me, when I add another two functions.
Attached my example.
I get error:
.\Intel_IPP\\ippcoremt.lib(C:/commander/production/ipp201702gold/windows_ia32/.build/windows/obj/ia32/core/s/st/owncpufeatures.obj):(.text[_ownGetMaskFeatures]+0x35):
undefined reference to `__security_cookie'
L.
-------------- next part --------------
(*
// Copyright 1999-2017 Intel Corporation All Rights Reserved.
//
// The source code, information and material ("Material") contained herein is
// owned by Intel Corporation or its suppliers or licensors, and title
// to such Material remains with Intel Corporation or its suppliers or
// licensors. The Material contains proprietary information of Intel
// or its suppliers and licensors. The Material is protected by worldwide
// copyright laws and treaty provisions. No part of the Material may be used,
// copied, reproduced, modified, published, uploaded, posted, transmitted,
// distributed or disclosed in any way without Intel's prior express written
// permission. No license under any patent, copyright or other intellectual
// property rights in the Material is granted to or conferred upon you,
// either expressly, by implication, inducement, estoppel or otherwise.
// Any license under such intellectual property rights must be express and
// approved by Intel in writing.
//
// Unless otherwise agreed by Intel in writing,
// you may not remove or alter this notice or any other notice embedded in
// Materials by Intel or Intel's suppliers or licensors in any way.
//
*)
//
// Intel(R) Integrated Performance Primitives (Intel(R) IPP)
//
// Dependencies:
// Image Processing: Core (ippcore), Vector Math (ippvm), Signal Processing (ipps)
//
// DLLs: 32 64 bit
// w7, my Optimized for processors with Intel SSE2
// s8, n8 Optimized for processors with Supplemental Streaming SIMD Extensions 3 (SSSE3)
// , m7 Optimized for processors with Intel SSE3
// p8, y8 Optimized for processors with Intel SSE4.2
// g9, e9 Optimized for processors with Intel® Advanced Vector Extensions (Intel® AVX) and Intel® Advanced Encryption Standard New Instructions (Intel® AES-NI)
// h9, l9 Optimized for processors with Intel® Advanced Vector Extensions 2 (Intel® AVX2)
//
unit ipp;
{$mode objfpc}
{$macro on}
{$inline on}
{$align 4}
{$packenum 4}
{$packrecords C}
interface
{ $DEFINE extdecl:=stdcall}
{$DEFINE extdecl:=cdecl}
{$link ippcoremt.lib}
{$link ippvmmt.lib}
{$link ippsmt.lib}
{$link ippimt.lib}
//
// Basic Types and Macro Definitions
//
type
int = integer;
Ipp8u = byte;
Ipp16u = word;
Ipp32u = dword;
Ipp8s = shortint;
Ipp16s = smallint;
Ipp32s = integer;
Ipp32f = single;
Ipp64s = Int64;
Ipp64u = UInt64;
Ipp64f = double;
Ipp16f = Ipp16s;
PIpp8u = ^Ipp8u;
IppLibraryVersion = record
major: integer; { e.g. 1 }
minor: integer; { e.g. 2 }
majorBuild: integer; { e.g. 3 }
build: integer; { e.g. 10, always >= majorBuild }
targetCpu: array [0..4-1] of AnsiChar; { corresponding to Intel(R) processor }
Name: PAnsiChar; { e.g. "ippsw7" }
Version: PAnsiChar; { e.g. "v1.2 Beta" }
BuildDate: PAnsiChar; { e.g. "Jul 20 99" }
end;
PIppLibraryVersion = ^IppLibraryVersion;
//
// Derivative Types and Macro Definitions
//
(* /////////////////////////////////////////////////////////////////////////////
// The following enumerator defines a status of Intel(R) IPP operations
// negative value means error
*)
IppStatus = (
(* errors *)
ippStsNotSupportedModeErr = -9999,(* The requested mode is currently not supported. *)
ippStsCpuNotSupportedErr = -9998,(* The target CPU is not supported. *)
ippStsInplaceModeNotSupportedErr = -9997,(* The inplace operation is currently not supported. *)
ippStsABIErrXMM15 = -8017, (* XMM15 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM14 = -8016, (* XMM14 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM13 = -8015, (* XMM13 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM12 = -8014, (* XMM12 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM11 = -8013, (* XMM11 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM10 = -8012, (* XMM10 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM9 = -8011, (* XMM9 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM8 = -8010, (* XMM8 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM7 = -8009, (* XMM7 is not saved by Intel(R) IPP function *)
ippStsABIErrXMM6 = -8008, (* XMM6 is not saved by Intel(R) IPP function *)
ippStsABIErrR15 = -8007, (* R15 is not saved by Intel(R) IPP function *)
ippStsABIErrR14 = -8006, (* R14 is not saved by Intel(R) IPP function *)
ippStsABIErrR13 = -8005, (* R13 is not saved by Intel(R) IPP function *)
ippStsABIErrR12 = -8004, (* R12 is not saved by Intel(R) IPP function *)
ippStsABIErrRBP = -8003, (* RBP is not saved by Intel(R) IPP function *)
ippStsABIErrRSI = -8002, (* RSI is not saved by Intel(R) IPP function *)
ippStsABIErrRDI = -8001, (* RDI is not saved by Intel(R) IPP function *)
ippStsABIErrRBX = -8000, (* RBX is not saved by Intel(R) IPP function *)
ippStsIIRIIRLengthErr = -234, (* Vector length for IIRIIR function is less than 3*(IIR order) *)
ippStsWarpTransformTypeErr = -233, (* The warp transform type is illegal *)
ippStsExceededSizeErr = -232, (* Requested size exceeded the maximum supported ROI size *)
ippStsWarpDirectionErr = -231, (* The warp transform direction is illegal *)
ippStsFilterTypeErr = -230, (* The filter type is incorrect or not supported *)
ippStsNormErr = -229, (* The norm is incorrect or not supported *)
ippStsAlgTypeErr = -228, (* Algorithm type is not supported. *)
ippStsMisalignedOffsetErr = -227, (* The offset is not aligned with an element. *)
ippStsQuadraticNonResidueErr = -226, (* SQRT operation on quadratic non-residue value. *)
ippStsBorderErr = -225, (* Illegal value for border type.*)
ippStsDitherTypeErr = -224, (* Dithering type is not supported. *)
ippStsH264BufferFullErr = -223, (* Buffer for the output bitstream is full. *)
ippStsWrongAffinitySettingErr= -222, (* An affinity setting does not correspond to the affinity setting that was set by f.ippSetAffinity(). *)
ippStsLoadDynErr = -221, (* Error when loading the dynamic library. *)
ippStsPointAtInfinity = -220, (* Point at infinity is detected. *)
ippStsUnknownStatusCodeErr = -216, (* Unknown status code. *)
ippStsOFBSizeErr = -215, (* Incorrect value for crypto OFB block size. *)
ippStsLzoBrokenStreamErr = -214, (* LZO safe decompression function cannot decode LZO stream. *)
ippStsRoundModeNotSupportedErr = -213, (* Rounding mode is not supported. *)
ippStsDecimateFractionErr = -212, (* Fraction in Decimate is not supported. *)
ippStsWeightErr = -211, (* Incorrect value for weight. *)
ippStsQualityIndexErr = -210, (* Cannot calculate the quality index for an image filled with a constant. *)
ippStsIIRPassbandRippleErr = -209, (* Ripple in passband for Chebyshev1 design is less than zero, equal to zero, or greater than 29. *)
ippStsFilterFrequencyErr = -208, (* Cutoff frequency of filter is less than zero, equal to zero, or greater than 0.5. *)
ippStsFIRGenOrderErr = -207, (* Order of the FIR filter for design is less than 1. *)
ippStsIIRGenOrderErr = -206, (* Order of the IIR filter for design is less than 1, or greater than 12. *)
ippStsConvergeErr = -205, (* The algorithm does not converge. *)
ippStsSizeMatchMatrixErr = -204, (* The sizes of the source matrices are unsuitable. *)
ippStsCountMatrixErr = -203, (* Count value is less than, or equal to zero. *)
ippStsRoiShiftMatrixErr = -202, (* RoiShift value is negative or not divisible by the size of the data type. *)
ippStsResizeNoOperationErr = -201, (* One of the output image dimensions is less than 1 pixel. *)
ippStsSrcDataErr = -200, (* The source buffer contains unsupported data. *)
ippStsMaxLenHuffCodeErr = -199, (* Huff: Max length of Huffman code is more than the expected one. *)
ippStsCodeLenTableErr = -198, (* Huff: Invalid codeLenTable. *)
ippStsFreqTableErr = -197, (* Huff: Invalid freqTable. *)
ippStsIncompleteContextErr = -196, (* Crypto: set up of context is not complete. *)
ippStsSingularErr = -195, (* Matrix is singular. *)
ippStsSparseErr = -194, (* Positions of taps are not in ascending order, or are negative, or repetitive. *)
ippStsBitOffsetErr = -193, (* Incorrect bit offset value. *)
ippStsQPErr = -192, (* Incorrect quantization parameter value. *)
ippStsVLCErr = -191, (* Illegal VLC or FLC is detected during stream decoding. *)
ippStsRegExpOptionsErr = -190, (* RegExp: Options for the pattern are incorrect. *)
ippStsRegExpErr = -189, (* RegExp: The structure pRegExpState contains incorrect data. *)
ippStsRegExpMatchLimitErr = -188, (* RegExp: The match limit is exhausted. *)
ippStsRegExpQuantifierErr = -187, (* RegExp: Incorrect quantifier. *)
ippStsRegExpGroupingErr = -186, (* RegExp: Incorrect grouping. *)
ippStsRegExpBackRefErr = -185, (* RegExp: Incorrect back reference. *)
ippStsRegExpChClassErr = -184, (* RegExp: Incorrect character class. *)
ippStsRegExpMetaChErr = -183, (* RegExp: Incorrect metacharacter. *)
ippStsStrideMatrixErr = -182, (* Stride value is not positive or not divisible by the size of the data type. *)
ippStsCTRSizeErr = -181, (* Incorrect value for crypto CTR block size. *)
ippStsJPEG2KCodeBlockIsNotAttached =-180, (* Codeblock parameters are not attached to the state structure. *)
ippStsNotPosDefErr = -179, (* Matrix is not positive definite. *)
ippStsEphemeralKeyErr = -178, (* ECC: Invalid ephemeral key. *)
ippStsMessageErr = -177, (* ECC: Invalid message digest. *)
ippStsShareKeyErr = -176, (* ECC: Invalid share key. *)
ippStsIvalidPublicKey = -175, (* ECC: Invalid public key. *)
ippStsIvalidPrivateKey = -174, (* ECC: Invalid private key. *)
ippStsOutOfECErr = -173, (* ECC: Point out of EC. *)
ippStsECCInvalidFlagErr = -172, (* ECC: Invalid Flag. *)
ippStsMP3FrameHeaderErr = -171, (* Error in fields of the IppMP3FrameHeader structure. *)
ippStsMP3SideInfoErr = -170, (* Error in fields of the IppMP3SideInfo structure. *)
ippStsBlockStepErr = -169, (* Step for Block is less than 8. *)
ippStsMBStepErr = -168, (* Step for MB is less than 16. *)
ippStsAacPrgNumErr = -167, (* AAC: Invalid number of elements for one program. *)
ippStsAacSectCbErr = -166, (* AAC: Invalid section codebook. *)
ippStsAacSfValErr = -164, (* AAC: Invalid scalefactor value. *)
ippStsAacCoefValErr = -163, (* AAC: Invalid quantized coefficient value. *)
ippStsAacMaxSfbErr = -162, (* AAC: Invalid coefficient index. *)
ippStsAacPredSfbErr = -161, (* AAC: Invalid predicted coefficient index. *)
ippStsAacPlsDataErr = -160, (* AAC: Invalid pulse data attributes. *)
ippStsAacGainCtrErr = -159, (* AAC: Gain control is not supported. *)
ippStsAacSectErr = -158, (* AAC: Invalid number of sections. *)
ippStsAacTnsNumFiltErr = -157, (* AAC: Invalid number of TNS filters. *)
ippStsAacTnsLenErr = -156, (* AAC: Invalid length of TNS region. *)
ippStsAacTnsOrderErr = -155, (* AAC: Invalid order of TNS filter. *)
ippStsAacTnsCoefResErr = -154, (* AAC: Invalid bit-resolution for TNS filter coefficients. *)
ippStsAacTnsCoefErr = -153, (* AAC: Invalid coefficients of TNS filter. *)
ippStsAacTnsDirectErr = -152, (* AAC: Invalid direction TNS filter. *)
ippStsAacTnsProfileErr = -151, (* AAC: Invalid TNS profile. *)
ippStsAacErr = -150, (* AAC: Internal error. *)
ippStsAacBitOffsetErr = -149, (* AAC: Invalid current bit offset in bitstream. *)
ippStsAacAdtsSyncWordErr = -148, (* AAC: Invalid ADTS syncword. *)
ippStsAacSmplRateIdxErr = -147, (* AAC: Invalid sample rate index. *)
ippStsAacWinLenErr = -146, (* AAC: Invalid window length (not short or long). *)
ippStsAacWinGrpErr = -145, (* AAC: Invalid number of groups for current window length. *)
ippStsAacWinSeqErr = -144, (* AAC: Invalid window sequence range. *)
ippStsAacComWinErr = -143, (* AAC: Invalid common window flag. *)
ippStsAacStereoMaskErr = -142, (* AAC: Invalid stereo mask. *)
ippStsAacChanErr = -141, (* AAC: Invalid channel number. *)
ippStsAacMonoStereoErr = -140, (* AAC: Invalid mono-stereo flag. *)
ippStsAacStereoLayerErr = -139, (* AAC: Invalid this Stereo Layer flag. *)
ippStsAacMonoLayerErr = -138, (* AAC: Invalid this Mono Layer flag. *)
ippStsAacScalableErr = -137, (* AAC: Invalid scalable object flag. *)
ippStsAacObjTypeErr = -136, (* AAC: Invalid audio object type. *)
ippStsAacWinShapeErr = -135, (* AAC: Invalid window shape. *)
ippStsAacPcmModeErr = -134, (* AAC: Invalid PCM output interleaving indicator. *)
ippStsVLCUsrTblHeaderErr = -133, (* VLC: Invalid header inside table. *)
ippStsVLCUsrTblUnsupportedFmtErr = -132, (* VLC: Table format is not supported. *)
ippStsVLCUsrTblEscAlgTypeErr = -131, (* VLC: Ecs-algorithm is not supported. *)
ippStsVLCUsrTblEscCodeLengthErr = -130, (* VLC: Esc-code length inside table header is incorrect. *)
ippStsVLCUsrTblCodeLengthErr = -129, (* VLC: Code length inside table is incorrect. *)
ippStsVLCInternalTblErr = -128, (* VLC: Invalid internal table. *)
ippStsVLCInputDataErr = -127, (* VLC: Invalid input data. *)
ippStsVLCAACEscCodeLengthErr = -126, (* VLC: Invalid AAC-Esc code length. *)
ippStsNoiseRangeErr = -125, (* Noise value for Wiener Filter is out of range. *)
ippStsUnderRunErr = -124, (* Error in data under run. *)
ippStsPaddingErr = -123, (* Detected padding error indicates the possible data corruption. *)
ippStsCFBSizeErr = -122, (* Incorrect value for crypto CFB block size. *)
ippStsPaddingSchemeErr = -121, (* Invalid padding scheme. *)
ippStsInvalidCryptoKeyErr = -120, (* A compromised key causes suspansion of the requested cryptographic operation. *)
ippStsLengthErr = -119, (* Incorrect value for string length. *)
ippStsBadModulusErr = -118, (* Bad modulus caused a failure in module inversion. *)
ippStsLPCCalcErr = -117, (* Cannot evaluate linear prediction. *)
ippStsRCCalcErr = -116, (* Cannot compute reflection coefficients. *)
ippStsIncorrectLSPErr = -115, (* Incorrect values for Linear Spectral Pair. *)
ippStsNoRootFoundErr = -114, (* No roots are found for equation. *)
ippStsJPEG2KBadPassNumber = -113, (* Pass number exceeds allowed boundaries [0,nOfPasses-1]. *)
ippStsJPEG2KDamagedCodeBlock= -112, (* Codeblock for decoding contains damaged data. *)
ippStsH263CBPYCodeErr = -111, (* Illegal Huffman code is detected through CBPY stream processing. *)
ippStsH263MCBPCInterCodeErr = -110, (* Illegal Huffman code is detected through MCBPC Inter stream processing. *)
ippStsH263MCBPCIntraCodeErr = -109, (* Illegal Huffman code is detected through MCBPC Intra stream processing. *)
ippStsNotEvenStepErr = -108, (* Step value is not pixel multiple. *)
ippStsHistoNofLevelsErr = -107, (* Number of levels for histogram is less than 2. *)
ippStsLUTNofLevelsErr = -106, (* Number of levels for LUT is less than 2. *)
ippStsMP4BitOffsetErr = -105, (* Incorrect bit offset value. *)
ippStsMP4QPErr = -104, (* Incorrect quantization parameter. *)
ippStsMP4BlockIdxErr = -103, (* Incorrect block index. *)
ippStsMP4BlockTypeErr = -102, (* Incorrect block type. *)
ippStsMP4MVCodeErr = -101, (* Illegal Huffman code is detected during MV stream processing. *)
ippStsMP4VLCCodeErr = -100, (* Illegal Huffman code is detected during VLC stream processing. *)
ippStsMP4DCCodeErr = -99, (* Illegal code is detected during DC stream processing. *)
ippStsMP4FcodeErr = -98, (* Incorrect fcode value. *)
ippStsMP4AlignErr = -97, (* Incorrect buffer alignment . *)
ippStsMP4TempDiffErr = -96, (* Incorrect temporal difference. *)
ippStsMP4BlockSizeErr = -95, (* Incorrect size of a block or macroblock. *)
ippStsMP4ZeroBABErr = -94, (* All BAB values are equal to zero. *)
ippStsMP4PredDirErr = -93, (* Incorrect prediction direction. *)
ippStsMP4BitsPerPixelErr = -92, (* Incorrect number of bits per pixel. *)
ippStsMP4VideoCompModeErr = -91, (* Incorrect video component mode. *)
ippStsMP4LinearModeErr = -90, (* Incorrect DC linear mode. *)
ippStsH263PredModeErr = -83, (* Incorrect Prediction Mode value. *)
ippStsH263BlockStepErr = -82, (* The step value is less than 8. *)
ippStsH263MBStepErr = -81, (* The step value is less than 16. *)
ippStsH263FrameWidthErr = -80, (* The frame width is less than 8. *)
ippStsH263FrameHeightErr = -79, (* The frame height is less than, or equal to zero. *)
ippStsH263ExpandPelsErr = -78, (* Expand pixels number is less than 8. *)
ippStsH263PlaneStepErr = -77, (* Step value is less than the plane width. *)
ippStsH263QuantErr = -76, (* Quantizer value is less than, or equal to zero, or greater than 31. *)
ippStsH263MVCodeErr = -75, (* Illegal Huffman code is detected during MV stream processing. *)
ippStsH263VLCCodeErr = -74, (* Illegal Huffman code is detected during VLC stream processing. *)
ippStsH263DCCodeErr = -73, (* Illegal code is detected during DC stream processing. *)
ippStsH263ZigzagLenErr = -72, (* Zigzag compact length is more than 64. *)
ippStsFBankFreqErr = -71, (* Incorrect value for the filter bank frequency parameter. *)
ippStsFBankFlagErr = -70, (* Incorrect value for the filter bank parameter. *)
ippStsFBankErr = -69, (* Filter bank is not correctly initialized. *)
ippStsNegOccErr = -67, (* Occupation count is negative. *)
ippStsCdbkFlagErr = -66, (* Incorrect value for the codebook flag parameter. *)
ippStsSVDCnvgErr = -65, (* SVD algorithm does not converge. *)
ippStsJPEGHuffTableErr = -64, (* JPEG Huffman table is destroyed. *)
ippStsJPEGDCTRangeErr = -63, (* JPEG DCT coefficient is out of range. *)
ippStsJPEGOutOfBufErr = -62, (* Attempt to access out of the buffer limits. *)
ippStsDrawTextErr = -61, (* System error in the draw text operation. *)
ippStsChannelOrderErr = -60, (* Incorrect order of the destination channels. *)
ippStsZeroMaskValuesErr = -59, (* All values of the mask are equal to zero. *)
ippStsQuadErr = -58, (* The quadrangle is nonconvex or degenerates into triangle, line, or point *)
ippStsRectErr = -57, (* Size of the rectangle region is less than, or equal to 1. *)
ippStsCoeffErr = -56, (* Incorrect values for transformation coefficients. *)
ippStsNoiseValErr = -55, (* Incorrect value for noise amplitude for dithering. *)
ippStsDitherLevelsErr = -54, (* Number of dithering levels is out of range. *)
ippStsNumChannelsErr = -53, (* Number of channels is incorrect, or not supported. *)
ippStsCOIErr = -52, (* COI is out of range. *)
ippStsDivisorErr = -51, (* Divisor is equal to zero, function is aborted. *)
ippStsAlphaTypeErr = -50, (* Illegal type of image compositing operation. *)
ippStsGammaRangeErr = -49, (* Gamma range bounds is less than, or equal to zero. *)
ippStsGrayCoefSumErr = -48, (* Sum of the conversion coefficients must be less than, or equal to 1. *)
ippStsChannelErr = -47, (* Illegal channel number. *)
ippStsToneMagnErr = -46, (* Tone magnitude is less than, or equal to zero. *)
ippStsToneFreqErr = -45, (* Tone frequency is negative, or greater than, or equal to 0.5. *)
ippStsTonePhaseErr = -44, (* Tone phase is negative, or greater than, or equal to 2*PI. *)
ippStsTrnglMagnErr = -43, (* Triangle magnitude is less than, or equal to zero. *)
ippStsTrnglFreqErr = -42, (* Triangle frequency is negative, or greater than, or equal to 0.5. *)
ippStsTrnglPhaseErr = -41, (* Triangle phase is negative, or greater than, or equal to 2*PI. *)
ippStsTrnglAsymErr = -40, (* Triangle asymmetry is less than -PI, or greater than, or equal to PI. *)
ippStsHugeWinErr = -39, (* Kaiser window is too big. *)
ippStsJaehneErr = -38, (* Magnitude value is negative. *)
ippStsStrideErr = -37, (* Stride value is less than the length of the row. *)
ippStsEpsValErr = -36, (* Negative epsilon value. *)
ippStsWtOffsetErr = -35, (* Invalid offset value for wavelet filter. *)
ippStsAnchorErr = -34, (* Anchor point is outside the mask. *)
ippStsMaskSizeErr = -33, (* Invalid mask size. *)
ippStsShiftErr = -32, (* Shift value is less than zero. *)
ippStsSampleFactorErr = -31, (* Sampling factor is less than, or equal to zero. *)
ippStsSamplePhaseErr = -30, (* Phase value is out of range: 0 <= phase < factor. *)
ippStsFIRMRFactorErr = -29, (* MR FIR sampling factor is less than, or equal to zero. *)
ippStsFIRMRPhaseErr = -28, (* MR FIR sampling phase is negative, or greater than, or equal to the sampling factor. *)
ippStsRelFreqErr = -27, (* Relative frequency value is out of range. *)
ippStsFIRLenErr = -26, (* Length of a FIR filter is less than, or equal to zero. *)
ippStsIIROrderErr = -25, (* Order of an IIR filter is not valid. *)
ippStsDlyLineIndexErr = -24, (* Invalid value for the delay line sample index. *)
ippStsResizeFactorErr = -23, (* Resize factor(s) is less than, or equal to zero. *)
ippStsInterpolationErr = -22, (* Invalid interpolation mode. *)
ippStsMirrorFlipErr = -21, (* Invalid flip mode. *)
ippStsMoment00ZeroErr = -20, (* Moment value M(0,0) is too small to continue calculations. *)
ippStsThreshNegLevelErr = -19, (* Negative value of the level in the threshold operation. *)
ippStsThresholdErr = -18, (* Invalid threshold bounds. *)
ippStsContextMatchErr = -17, (* Context parameter does not match the operation. *)
ippStsFftFlagErr = -16, (* Invalid value for the FFT flag parameter. *)
ippStsFftOrderErr = -15, (* Invalid value for the FFT order parameter. *)
ippStsStepErr = -14, (* Step value is not valid. *)
ippStsScaleRangeErr = -13, (* Scale bounds are out of range. *)
ippStsDataTypeErr = -12, (* Data type is incorrect or not supported. *)
ippStsOutOfRangeErr = -11, (* Argument is out of range, or point is outside the image. *)
ippStsDivByZeroErr = -10, (* An attempt to divide by zero. *)
ippStsMemAllocErr = -9, (* Memory allocated for the operation is not enough.*)
ippStsNullPtrErr = -8, (* Null pointer error. *)
ippStsRangeErr = -7, (* Incorrect values for bounds: the lower bound is greater than the upper bound. *)
ippStsSizeErr = -6, (* Incorrect value for data size. *)
ippStsBadArgErr = -5, (* Incorrect arg/param of the function. *)
ippStsNoMemErr = -4, (* Not enough memory for the operation. *)
ippStsSAReservedErr3 = -3, (* Unknown/unspecified error, -3. *)
ippStsErr = -2, (* Unknown/unspecified error, -2. *)
ippStsSAReservedErr1 = -1, (* Unknown/unspecified error, -1. *)
(* no errors *)
ippStsNoErr = 0, (* No errors. *)
(* warnings *)
ippStsNoOperation = 1, (* No operation has been executed. *)
ippStsMisalignedBuf = 2, (* Misaligned pointer in operation in which it must be aligned. *)
ippStsSqrtNegArg = 3, (* Negative value(s) for the argument in the Sqrt function. *)
ippStsInvZero = 4, (* INF result. Zero value was met by InvThresh with zero level. *)
ippStsEvenMedianMaskSize= 5, (* Even size of the Median Filter mask was replaced with the odd one. *)
ippStsDivByZero = 6, (* Zero value(s) for the divisor in the Div function. *)
ippStsLnZeroArg = 7, (* Zero value(s) for the argument in the Ln function. *)
ippStsLnNegArg = 8, (* Negative value(s) for the argument in the Ln function. *)
ippStsNanArg = 9, (* Argument value is not a number. *)
ippStsJPEGMarker = 10, (* JPEG marker in the bitstream. *)
ippStsResFloor = 11, (* All result values are floored. *)
ippStsOverflow = 12, (* Overflow in the operation. *)
ippStsLSFLow = 13, (* Quantized LP synthesis filter stability check is applied at the low boundary of [0,pi]. *)
ippStsLSFHigh = 14, (* Quantized LP synthesis filter stability check is applied at the high boundary of [0,pi]. *)
ippStsLSFLowAndHigh = 15, (* Quantized LP synthesis filter stability check is applied at both boundaries of [0,pi]. *)
ippStsZeroOcc = 16, (* Zero occupation count. *)
ippStsUnderflow = 17, (* Underflow in the operation. *)
ippStsSingularity = 18, (* Singularity in the operation. *)
ippStsDomain = 19, (* Argument is out of the function domain. *)
ippStsNonIntelCpu = 20, (* The target CPU is not Genuine Intel. *)
ippStsCpuMismatch = 21, (* Cannot set the library for the given CPU. *)
ippStsNoIppFunctionFound = 22, (* Application does not contain Intel(R) IPP function calls. *)
ippStsDllNotFoundBestUsed = 23, (* Dispatcher cannot find the newest version of the Intel(R) IPP dll. *)
ippStsNoOperationInDll = 24, (* The function does nothing in the dynamic version of the library. *)
ippStsInsufficientEntropy= 25, (* Generation of the prime/key failed due to insufficient entropy in the random seed and stimulus bit string. *)
ippStsOvermuchStrings = 26, (* Number of destination strings is more than expected. *)
ippStsOverlongString = 27, (* Length of one of the destination strings is more than expected. *)
ippStsAffineQuadChanged = 28, (* 4th vertex of destination quad is not equal to customer's one. *)
ippStsWrongIntersectROI = 29, (* ROI has no intersection with the source or destination ROI. No operation. *)
ippStsWrongIntersectQuad = 30, (* Quadrangle has no intersection with the source or destination ROI. No operation. *)
ippStsSmallerCodebook = 31, (* Size of created codebook is less than the cdbkSize argument. *)
ippStsSrcSizeLessExpected = 32, (* DC: Size of the source buffer is less than the expected one. *)
ippStsDstSizeLessExpected = 33, (* DC: Size of the destination buffer is less than the expected one. *)
ippStsStreamEnd = 34, (* DC: The end of stream processed. *)
ippStsDoubleSize = 35, (* Width or height of image is odd. *)
ippStsNotSupportedCpu = 36, (* The CPU is not supported. *)
ippStsUnknownCacheSize = 37, (* The CPU is supported, but the size of the cache is unknown. *)
ippStsSymKernelExpected = 38, (* The Kernel is not symmetric. *)
ippStsEvenMedianWeight = 39, (* Even weight of the Weighted Median Filter is replaced with the odd one. *)
ippStsWrongIntersectVOI = 40, (* VOI has no intersection with the source or destination volume. No operation. *)
ippStsI18nMsgCatalogInvalid=41, (* Message Catalog is invalid, English message returned. *)
ippStsI18nGetMessageFail = 42, (* Failed to fetch a localized message, English message returned. For more information use errno on Linux* OS and GetLastError on Windows* OS. *)
ippStsWaterfall = 43, (* Cannot load required library, waterfall is used. *)
ippStsPrevLibraryUsed = 44, (* Cannot load required library, previous dynamic library is used. *)
ippStsLLADisabled = 45, (* OpenMP* Low Level Affinity is disabled. *)
ippStsNoAntialiasing = 46, (* The mode does not support antialiasing. *)
ippStsRepetitiveSrcData = 47, (* DC: The source data is too repetitive. *)
ippStsSizeWrn = 48, (* The size does not allow to perform full operation. *)
ippStsFeatureNotSupported = 49, (* Current CPU doesn't support at least 1 of the desired features. *)
ippStsUnknownFeature = 50, (* At least one of the desired features is unknown. *)
ippStsFeaturesCombination = 51, (* Wrong combination of features. *)
ippStsAccurateModeNotSupported = 52 (* Accurate mode is not supported. *)
);
IppiSize = record
width: int;
height: int;
end;
//
// Core (ippCore)
//
{ /////////////////////////////////////////////////////////////////////////////
// Name: ippGetLibVersion
// Purpose: getting of the library version
// Returns: the structure of information about version
// of ippcore library
// Parameters:
//
// Notes: not necessary to release the returned structure
}
function ippGetLibVersion: PIppLibraryVersion; extdecl; external name 'ippGetLibVersion at 0';
(* /////////////////////////////////////////////////////////////////////////////
// Name: ippInit
// Purpose: Automatic switching to best for current cpu library code using.
// Returns:
// ippStsNoErr
//
// Parameter: nothing
//
// Notes: At the moment of this function execution no any other Intel(R) IPP function
// has to be working
*)
function ippInit: IppStatus; extdecl; external name 'ippInit at 0';
//
// Image Processing
//
function ippiThreshold_LTValGTVal_8u_C1IR(pSrcDst: PIpp8u; srcDstStep: int;
roiSize: IppiSize; thresholdLT: Ipp8u; valueLT: Ipp8u; thresholdGT: Ipp8u;
valueGT: Ipp8u): IppStatus; extdecl; external name 'ippiThreshold_LTValGTVal_8u_C1IR at 32';
implementation
end.
-------------- next part --------------
program test_IPP;
{$mode objfpc}{$H+}
uses
Classes,
ipp;
var
lv: PIppLibraryVersion;
b: array[0..5] of byte;
roi: ippiSize;
begin
writeln(ippInit);
lv := ippGetLibVersion;
writeln(lv^.Name, lv^.Version);
roi.width:=3;
roi.height:=2;
ippiThreshold_LTValGTVal_8u_C1IR(@b[0], 3, roi, 127, 0, 127, 255);
readln;
end.
More information about the fpc-devel
mailing list