00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 #include "config.h"
00024 
00025 #ifdef LIBMPEG2_MLIB
00026 
00027 #include <mlib_types.h>
00028 #include <mlib_status.h>
00029 #include <mlib_sys.h>
00030 #include <mlib_video.h>
00031 #include <inttypes.h>
00032 
00033 #include "mpeg2.h"
00034 #include "mpeg2_internal.h"
00035 
00036 static void MC_put_o_16_mlib (uint8_t * dest, const uint8_t * ref,
00037                               int stride, int height)
00038 {
00039     if (height == 16)
00040         mlib_VideoCopyRef_U8_U8_16x16 (dest, (uint8_t *) ref, stride);
00041     else
00042         mlib_VideoCopyRef_U8_U8_16x8 (dest, (uint8_t *) ref, stride);
00043 }
00044 
00045 static void MC_put_x_16_mlib (uint8_t * dest, const uint8_t * ref,
00046                               int stride, int height)
00047 {
00048     if (height == 16)
00049         mlib_VideoInterpX_U8_U8_16x16 (dest, (uint8_t *) ref, stride, stride);
00050     else
00051         mlib_VideoInterpX_U8_U8_16x8 (dest, (uint8_t *) ref, stride, stride);
00052 }
00053 
00054 static void MC_put_y_16_mlib (uint8_t * dest, const uint8_t * ref,
00055                               int stride, int height)
00056 {
00057     if (height == 16)
00058         mlib_VideoInterpY_U8_U8_16x16 (dest, (uint8_t *) ref, stride, stride);
00059     else
00060         mlib_VideoInterpY_U8_U8_16x8 (dest, (uint8_t *) ref, stride, stride);
00061 }
00062 
00063 static void MC_put_xy_16_mlib (uint8_t * dest, const uint8_t * ref,
00064                                int stride, int height)
00065 {
00066     if (height == 16)
00067         mlib_VideoInterpXY_U8_U8_16x16 (dest, (uint8_t *) ref, stride, stride);
00068     else
00069         mlib_VideoInterpXY_U8_U8_16x8 (dest, (uint8_t *) ref, stride, stride);
00070 }
00071 
00072 static void MC_put_o_8_mlib (uint8_t * dest, const uint8_t * ref,
00073                              int stride, int height)
00074 {
00075     if (height == 8)
00076         mlib_VideoCopyRef_U8_U8_8x8 (dest, (uint8_t *) ref, stride);
00077     else
00078         mlib_VideoCopyRef_U8_U8_8x4 (dest, (uint8_t *) ref, stride);
00079 }
00080 
00081 static void MC_put_x_8_mlib (uint8_t * dest, const uint8_t * ref,
00082                              int stride, int height)
00083 {
00084     if (height == 8)
00085         mlib_VideoInterpX_U8_U8_8x8 (dest, (uint8_t *) ref, stride, stride);
00086     else
00087         mlib_VideoInterpX_U8_U8_8x4 (dest, (uint8_t *) ref, stride, stride);
00088 }
00089 
00090 static void MC_put_y_8_mlib (uint8_t * dest, const uint8_t * ref,
00091                              int stride, int height)
00092 {
00093     if (height == 8)
00094         mlib_VideoInterpY_U8_U8_8x8 (dest, (uint8_t *) ref, stride, stride);
00095     else
00096         mlib_VideoInterpY_U8_U8_8x4 (dest, (uint8_t *) ref, stride, stride);
00097 }
00098 
00099 static void MC_put_xy_8_mlib (uint8_t * dest, const uint8_t * ref,
00100                               int stride, int height)
00101 {
00102     if (height == 8)
00103         mlib_VideoInterpXY_U8_U8_8x8 (dest, (uint8_t *) ref, stride, stride);
00104     else
00105         mlib_VideoInterpXY_U8_U8_8x4 (dest, (uint8_t *) ref, stride, stride);
00106 }
00107 
00108 static void MC_avg_o_16_mlib (uint8_t * dest, const uint8_t * ref,
00109                               int stride, int height)
00110 {
00111     if (height == 16)
00112         mlib_VideoCopyRefAve_U8_U8_16x16 (dest, (uint8_t *) ref, stride);
00113     else
00114         mlib_VideoCopyRefAve_U8_U8_16x8 (dest, (uint8_t *) ref, stride);
00115 }
00116 
00117 static void MC_avg_x_16_mlib (uint8_t * dest, const uint8_t * ref,
00118                               int stride, int height)
00119 {
00120     if (height == 16)
00121         mlib_VideoInterpAveX_U8_U8_16x16 (dest, (uint8_t *) ref,
00122                                           stride, stride);
00123     else
00124         mlib_VideoInterpAveX_U8_U8_16x8 (dest, (uint8_t *) ref,
00125                                          stride, stride);
00126 }
00127 
00128 static void MC_avg_y_16_mlib (uint8_t * dest, const uint8_t * ref,
00129                               int stride, int height)
00130 {
00131     if (height == 16)
00132         mlib_VideoInterpAveY_U8_U8_16x16 (dest, (uint8_t *) ref,
00133                                           stride, stride);
00134     else
00135         mlib_VideoInterpAveY_U8_U8_16x8 (dest, (uint8_t *) ref,
00136                                          stride, stride);
00137 }
00138 
00139 static void MC_avg_xy_16_mlib (uint8_t * dest, const uint8_t * ref,
00140                                int stride, int height)
00141 {
00142     if (height == 16)
00143         mlib_VideoInterpAveXY_U8_U8_16x16 (dest, (uint8_t *) ref,
00144                                            stride, stride);
00145     else
00146         mlib_VideoInterpAveXY_U8_U8_16x8 (dest, (uint8_t *) ref,
00147                                           stride, stride);
00148 }
00149 
00150 static void MC_avg_o_8_mlib (uint8_t * dest, const uint8_t * ref,
00151                              int stride, int height)
00152 {
00153     if (height == 8)
00154         mlib_VideoCopyRefAve_U8_U8_8x8 (dest, (uint8_t *) ref, stride);
00155     else
00156         mlib_VideoCopyRefAve_U8_U8_8x4 (dest, (uint8_t *) ref, stride);
00157 }
00158 
00159 static void MC_avg_x_8_mlib (uint8_t * dest, const uint8_t * ref,
00160                              int stride, int height)
00161 {
00162     if (height == 8)
00163         mlib_VideoInterpAveX_U8_U8_8x8 (dest, (uint8_t *) ref, stride, stride);
00164     else
00165         mlib_VideoInterpAveX_U8_U8_8x4 (dest, (uint8_t *) ref, stride, stride);
00166 }
00167 
00168 static void MC_avg_y_8_mlib (uint8_t * dest, const uint8_t * ref,
00169                              int stride, int height)
00170 {
00171     if (height == 8)
00172         mlib_VideoInterpAveY_U8_U8_8x8 (dest, (uint8_t *) ref, stride, stride);
00173     else
00174         mlib_VideoInterpAveY_U8_U8_8x4 (dest, (uint8_t *) ref, stride, stride);
00175 }
00176 
00177 static void MC_avg_xy_8_mlib (uint8_t * dest, const uint8_t * ref,
00178                               int stride, int height)
00179 {
00180     if (height == 8)
00181         mlib_VideoInterpAveXY_U8_U8_8x8 (dest, (uint8_t *) ref,
00182                                          stride, stride);
00183     else
00184         mlib_VideoInterpAveXY_U8_U8_8x4 (dest, (uint8_t *) ref,
00185                                          stride, stride);
00186 }
00187 
00188 MPEG2_MC_EXTERN (mlib)
00189 
00190 #endif