00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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