⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scratchmem.h

📁 G.729 and G.723.1 codecs x86 (and x86_64) Linux and FreeBSD source code for Asterisk open source PBX
💻 H
字号:
/*****************************************************************************//// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright (c) 2005-2007 Intel Corporation. All Rights Reserved.//// Intel(R) Integrated Performance Primitives////     USCI - Unified Speech Codec Interface////  Purpose: Scratch  memory managment header file.***************************************************************************/#ifndef __SCRATCHMEM_H__#define __SCRATCHMEM_H__/* Define NULL pointer value */#ifndef NULL#ifdef  __cplusplus#define NULL    0#else#define NULL    ((void *)0)#endif#endif#if defined(__ICC) || defined( __ICL ) || defined ( __ECL )  #define __INLINE static __inline#elif defined( __GNUC__ )  #define __INLINE static __inline__#else  #define __INLINE static#endif#if defined(__ICL ) || defined ( __ECL )/*  Intel C/C++ compiler bug for __declspec(align(8)) !!! */  #define __ALIGN(n) __declspec(align(16))  #define __ALIGN32 __declspec(align(32))#else  #define __ALIGN(n)  #define __ALIGN32#endif#if (defined (_WIN64) || defined(linux64) || defined(linux32e)) && !defined(_WIN32_WCE)__INLINEIpp64s IPP_INT_PTR( const void* ptr )  {    union {        void*   Ptr;        Ipp64s  Int;    } dd;    dd.Ptr = (void*)ptr;    return dd.Int;}__INLINEIpp64u IPP_UINT_PTR( const void* ptr )  {    union {        void*    Ptr;        Ipp64u   Int;    } dd;    dd.Ptr = (void*)ptr;    return dd.Int;}#elif (defined(_WIN32) || defined(linux32)) && !defined(_WIN32_WCE)__INLINEIpp32s IPP_INT_PTR( const void* ptr )  {    union {        void*   Ptr;        Ipp32s  Int;    } dd;    dd.Ptr = (void*)ptr;    return dd.Int;}__INLINEIpp32u IPP_UINT_PTR( const void* ptr )  {    union {        void*   Ptr;        Ipp32u  Int;    } dd;    dd.Ptr = (void*)ptr;    return dd.Int;}#else  #define IPP_INT_PTR( ptr )  ( (long)(ptr) )  #define IPP_UINT_PTR( ptr ) ( (Ipp32u long)(ptr) )#endif#define IPP_BYTES_TO_ALIGN(ptr, align) ((-(IPP_INT_PTR(ptr)&((align)-1)))&((align)-1))#define IPP_ALIGNED_PTR(ptr, align) (void*)( (Ipp8s*)(ptr) + (IPP_BYTES_TO_ALIGN( ptr, align )) )#define IPP_MALLOC_ALIGNED_BYTES  32#define IPP_MALLOC_ALIGNED_0BYTES   0#define IPP_MALLOC_ALIGNED_1BYTES   1#define IPP_MALLOC_ALIGNED_8BYTES   8#define IPP_MALLOC_ALIGNED_16BYTES 16#define IPP_MALLOC_ALIGNED_32BYTES 32#define IPP_ALIGNED_ARRAY(align,arrtype,arrname,arrlength)\ arrtype arrname##AlignedArrBuff[(arrlength)+IPP_MALLOC_ALIGNED_##align##BYTES/sizeof(arrtype)];\ arrtype *arrname = (arrtype*)IPP_ALIGNED_PTR(arrname##AlignedArrBuff,align)__INLINE void* GetMemory(Ipp32s arrlen, Ipp32s sizeOfElem, Ipp8s **CurPtr){   void *ret;   ret = (void*)IPP_ALIGNED_PTR(*CurPtr,sizeOfElem);   *CurPtr += (arrlen+1)*sizeOfElem;   return ret;}__INLINE void* GetAlignMemory(Ipp32s align, Ipp32s arrlen, Ipp32s sizeOfElem, Ipp8s **CurPtr){   void *ret;   ret = (void*)IPP_ALIGNED_PTR(*CurPtr,align);   *CurPtr += (arrlen+align/sizeOfElem)*sizeOfElem;   return ret;}typedef struct _ScratchMem_Obj {    Ipp8s *base;    Ipp8s *CurPtr;    Ipp32s  *VecPtr;    Ipp32s   offset;}ScratchMem_Obj;   #define LOCAL_ALIGN_ARRAY(align,arrtype,arrname,arrlength,obj)\      arrtype *arrname = (arrtype *)GetAlignMemory(align,arrlength,sizeof(arrtype),&(obj)->Mem.CurPtr)   #define LOCAL_ARRAY(arrtype,arrname,arrlength,obj)\      arrtype *arrname = (arrtype *)GetMemory(arrlength,sizeof(arrtype),&(obj)->Mem.CurPtr)   #define LOCAL_ARRAY_FREE(arrtype,arrname,arrlength,obj)\      arrname=NULL;\      (obj)->Mem.CurPtr -= ((arrlength)+1)*sizeof(arrtype)   #define LOCAL_ALIGN_ARRAY_FREE(align,arrtype,arrname,arrlength,obj)\      arrname=NULL;\      (obj)->Mem.CurPtr -= ((arrlength)+IPP_MALLOC_ALIGNED_##align##BYTES/sizeof(arrtype))*sizeof(arrtype)   #define CLEAR_SCRATCH_MEMORY(obj)\      (obj)->Mem.CurPtr = (obj)->Mem.base   #define OPEN_SCRATCH_BLOCK(obj)\      (obj)->Mem.VecPtr[(obj)->Mem.offset] = IPP_INT_PTR((obj)->Mem.CurPtr);\      (obj)->Mem.offset++   #define CLOSE_SCRATCH_BLOCK(obj)\      (obj)->Mem.offset--;\      (obj)->Mem.CurPtr = (Ipp8s *)(obj)->Mem.VecPtr[(obj)->Mem.offset]#ifdef CONST   #undef CONST#endif/*#if (_IPP_ARCH == _IPP_ARCH_XSC)   #define CONST#else #define CONST const#endif*/#define CONST#endif /* __SCRATCHMEM_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -