00001 00017 #ifndef _MEMALLOC_H_ 00018 #define _MEMALLOC_H_ 00019 00020 #include "global.h" 00021 #include "distortion.h" 00022 #include "lagrangian.h" 00023 #include "quant_params.h" 00024 00025 #if defined(USEMMX) // && (IMGTYPE == 0) // MMX, SSE, SSE2 intrinsic support 00026 #if defined(_MSC_VER) || defined(__INTEL_COMPILER) // ICC 00027 # include <emmintrin.h> 00028 # else 00029 # include <xmmintrin.h> 00030 # endif 00031 #endif 00032 00033 extern int get_mem2Ddist(DistortionData ***array2D, int dim0, int dim1); 00034 00035 extern int get_mem2Dlm (LambdaParams ***array2D, int dim0, int dim1); 00036 extern int get_mem2Dolm (LambdaParams ***array2D, int dim0, int dim1, int offset); 00037 00038 extern int get_mem2Dmp (PicMotionParams2 ***array2D, int dim0, int dim1); 00039 extern int get_mem3Dmp (PicMotionParams2 ****array3D, int dim0, int dim1, int dim2); 00040 00041 extern int get_mem2Dquant(LevelQuantParams ***array2D, int dim0, int dim1); 00042 extern int get_mem3Dquant(LevelQuantParams ****array3D, int dim0, int dim1, int dim2); 00043 extern int get_mem4Dquant(LevelQuantParams *****array4D, int dim0, int dim1, int dim2, int dim3); 00044 extern int get_mem5Dquant(LevelQuantParams ******array5D, int dim0, int dim1, int dim2, int dim3, int dim4); 00045 00046 extern int get_mem2Dmv (MotionVector ***array2D, int dim0, int dim1); 00047 extern int get_mem3Dmv (MotionVector ****array3D, int dim0, int dim1, int dim2); 00048 extern int get_mem4Dmv (MotionVector *****array4D, int dim0, int dim1, int dim2, int dim3); 00049 extern int get_mem5Dmv (MotionVector ******array5D, int dim0, int dim1, int dim2, int dim3, int dim4); 00050 00051 extern int get_mem2D(byte ***array2D, int dim0, int dim1); 00052 extern int get_mem3D(byte ****array3D, int dim0, int dim1, int dim2); 00053 extern int get_mem4D(byte *****array4D, int dim0, int dim1, int dim2, int dim3); 00054 00055 extern int get_mem2Dint(int ***array2D, int rows, int columns); 00056 extern int get_mem3Dint(int ****array3D, int frames, int rows, int columns); 00057 extern int get_mem4Dint(int *****array4D, int idx, int frames, int rows, int columns ); 00058 extern int get_mem5Dint(int ******array5D, int refs, int blocktype, int rows, int columns, int component); 00059 00060 00061 extern int get_mem3Duint16(uint16 ****array3D,int dim0, int dim1, int dim2); 00062 00063 extern int get_mem2Dint64(int64 ***array2D, int rows, int columns); 00064 extern int get_mem3Dint64(int64 ****array3D, int frames, int rows, int columns); 00065 00066 extern int get_mem2Dshort(short ***array2D, int dim0, int dim1); 00067 extern int get_mem3Dshort(short ****array3D, int dim0, int dim1, int dim2); 00068 extern int get_mem4Dshort(short *****array4D, int dim0, int dim1, int dim2, int dim3); 00069 extern int get_mem5Dshort(short ******array5D, int dim0, int dim1, int dim2, int dim3, int dim4); 00070 extern int get_mem6Dshort(short *******array6D, int dim0, int dim1, int dim2, int dim3, int dim4, int dim5); 00071 extern int get_mem7Dshort(short ********array7D, int dim0, int dim1, int dim2, int dim3, int dim4, int dim5, int dim6); 00072 00073 extern int get_mem1Dpel(imgpel **array2D, int rows); 00074 extern int get_mem2Dpel(imgpel ***array2D, int rows, int columns); 00075 extern int get_mem3Dpel(imgpel ****array3D, int frames, int rows, int columns); 00076 extern int get_mem4Dpel(imgpel *****array4D, int sub_x, int sub_y, int rows, int columns); 00077 extern int get_mem5Dpel(imgpel ******array5D, int dims, int sub_x, int sub_y, int rows, int columns); 00078 00079 extern int get_mem2Ddouble (double ***array2D, int rows, int columns); 00080 extern int get_mem2Dodouble(double ***array2D, int rows, int columns, int offset); 00081 extern int get_mem3Dodouble(double ****array2D, int rows, int columns, int pels, int offset); 00082 00083 extern int get_mem2Doint (int ***array2D, int rows, int columns, int offset); 00084 extern int get_mem3Doint (int ****array3D, int rows, int columns, int pels, int offset); 00085 00086 extern int get_offset_mem2Dshort(short ***array2D, int rows, int columns, int offset_y, int offset_x); 00087 00088 extern void free_offset_mem2Dshort(short **array2D, int columns, int offset_x, int offset_y); 00089 00090 extern void free_mem2Ddist (DistortionData **array2D); 00091 00092 extern void free_mem2Dlm (LambdaParams **array2D); 00093 extern void free_mem2Dolm (LambdaParams **array2D, int offset); 00094 00095 extern void free_mem2Dmp (PicMotionParams2 **array2D); 00096 extern void free_mem3Dmp (PicMotionParams2 ***array2D); 00097 00098 extern void free_mem2Dquant(LevelQuantParams **array2D); 00099 extern void free_mem3Dquant(LevelQuantParams ***array2D); 00100 extern void free_mem4Dquant(LevelQuantParams ****array2D); 00101 extern void free_mem5Dquant(LevelQuantParams *****array2D); 00102 00103 extern void free_mem2Dmv (MotionVector **array2D); 00104 extern void free_mem3Dmv (MotionVector ***array2D); 00105 extern void free_mem4Dmv (MotionVector ****array2D); 00106 extern void free_mem5Dmv (MotionVector *****array2D); 00107 00108 extern void free_mem2D (byte **array2D); 00109 extern void free_mem3D (byte ***array3D); 00110 extern void free_mem4D (byte ****array4D); 00111 00112 extern void free_mem2Dint (int **array2D); 00113 extern void free_mem3Dint (int ***array3D); 00114 extern void free_mem4Dint (int ****array4D); 00115 extern void free_mem5Dint (int *****array5D); 00116 00117 extern void free_mem2Dint64(int64 **array2D); 00118 extern void free_mem3Dint64(int64 ***array3D); 00119 00120 extern void free_mem2Dshort(short **array2D); 00121 extern void free_mem3Dshort(short ***array3D); 00122 extern void free_mem4Dshort(short ****array4D); 00123 extern void free_mem5Dshort(short *****array5D); 00124 extern void free_mem6Dshort(short ******array6D); 00125 extern void free_mem7Dshort(short *******array7D); 00126 00127 extern void free_mem1Dpel (imgpel *array1D); 00128 extern void free_mem2Dpel (imgpel **array2D); 00129 extern void free_mem3Dpel (imgpel ***array3D); 00130 extern void free_mem4Dpel (imgpel ****array4D); 00131 extern void free_mem5Dpel (imgpel *****array5D); 00132 extern void free_mem2Ddouble(double **array2D); 00133 00134 extern void free_mem2Dodouble(double **array2D, int offset); 00135 extern void free_mem3Dodouble(double ***array3D, int rows, int columns, int offset); 00136 extern void free_mem2Doint (int **array2D, int offset); 00137 extern void free_mem3Doint (int ***array3D, int rows, int columns, int offset); 00138 00139 extern int init_top_bot_planes(imgpel **imgFrame, int height, imgpel ***imgTopField, imgpel ***imgBotField); 00140 extern void free_top_bot_planes(imgpel **imgTopField, imgpel **imgBotField); 00141 00142 extern void no_mem_exit(char *where); 00143 00144 #endif