00001 #ifndef BLEND_H
00002 #define BLEND_H
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00008 #include "mythconfig.h"
00009 #if HAVE_STDINT_H
00010 #include <stdint.h>
00011 #endif
00012
00013 #ifdef __OpenBSD__
00014 #include <i386/types.h>
00015 #endif
00016
00017 typedef void (*blendregion_ptr) (uint8_t *, uint8_t *, uint8_t *, uint8_t *,
00018 int, uint8_t *, uint8_t *, uint8_t *,
00019 uint8_t *, int, int, int, int, int,
00020 int16_t[256], uint8_t[256][256]);
00021
00022 typedef void (*blendcolumn2_ptr) (uint8_t *, uint8_t *, uint8_t *, uint8_t *,
00023 int, uint8_t *, uint8_t *, uint8_t *,
00024 uint8_t *, int, uint8_t *, uint8_t *,
00025 uint8_t *, uint8_t *, uint8_t *, int, int,
00026 int, int, int, int16_t[256],
00027 uint8_t[256][256]);
00028
00029 typedef void (*blendcolumn_ptr) (uint8_t *, uint8_t *, uint8_t *, uint8_t *,
00030 int, uint8_t *, uint8_t *, uint8_t *,
00031 uint8_t *, int, int, int, int, int,
00032 int16_t[256], uint8_t[256][256]);
00033
00034 typedef void (*blendcolor_ptr) (uint8_t, uint8_t, uint8_t, uint8_t *, int,
00035 uint8_t *, uint8_t *, uint8_t *, uint8_t *,
00036 int, int, int, int, int, int16_t[256],
00037 uint8_t[256][256]);
00038
00039 typedef void (*blendconst_ptr) (uint8_t, uint8_t, uint8_t, uint8_t,
00040 uint8_t *, uint8_t *, uint8_t *, uint8_t *,
00041 int, int, int, int, int16_t[256],
00042 uint8_t[256][256]);
00043
00044 #ifdef MMX
00045 void blendregion_mmx (uint8_t * ysrc, uint8_t * usrc, uint8_t * vsrc,
00046 uint8_t * asrc, int srcstrd,
00047 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00048 uint8_t * adst, int dststrd,
00049 int width, int height, int alphamod, int dochroma,
00050 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00051
00052 void blendcolumn2_mmx (uint8_t * ysrc1, uint8_t * usrc1, uint8_t * vsrc1,
00053 uint8_t * asrc1, int srcstrd1,
00054 uint8_t * ysrc2, uint8_t * usrc2, uint8_t * vsrc2,
00055 uint8_t * asrc2, int srcstrd2,
00056 uint8_t * mask,
00057 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00058 uint8_t * adst, int dststrd,
00059 int width, int height, int alphamod, int dochroma,
00060 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00061
00062 void blendcolumn_mmx (uint8_t * ysrc, uint8_t * usrc, uint8_t * vsrc,
00063 uint8_t * asrc, int srcstrd,
00064 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00065 uint8_t * adst, int dststrd,
00066 int width, int height, int alphamod, int dochroma,
00067 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00068
00069 void blendcolor_mmx (uint8_t ysrc, uint8_t usrc, uint8_t vsrc,
00070 uint8_t * asrc, int srcstrd,
00071 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00072 uint8_t * adst, int dststrd,
00073 int width, int height, int alphamod, int dochroma,
00074 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00075
00076 void blendconst_mmx (uint8_t ysrc, uint8_t usrc, uint8_t vsrc,
00077 uint8_t asrc,
00078 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00079 uint8_t * adst, int dststrd,
00080 int width, int height, int dochroma,
00081 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00082 #endif
00083
00084 void blendregion (uint8_t * ysrc, uint8_t * usrc, uint8_t * vsrc,
00085 uint8_t * asrc, int srcstrd,
00086 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00087 uint8_t * adst, int dststrd,
00088 int width, int height, int alphamod, int dochroma,
00089 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00090
00091 void blendcolumn2 (uint8_t * ysrc1, uint8_t * usrc1, uint8_t * vsrc1,
00092 uint8_t * asrc1, int srcstrd1,
00093 uint8_t * ysrc2, uint8_t * usrc2, uint8_t * vsrc2,
00094 uint8_t * asrc2, int srcstrd2,
00095 uint8_t * mask,
00096 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00097 uint8_t * adst, int dststrd,
00098 int width, int height, int alphamod, int dochroma,
00099 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00100
00101 void blendcolumn (uint8_t * ysrc, uint8_t * usrc, uint8_t * vsrc,
00102 uint8_t * asrc, int srcstrd,
00103 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00104 uint8_t * adst, int dststrd,
00105 int width, int height, int alphamod, int dochroma,
00106 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00107
00108 void blendcolor (uint8_t ysrc, uint8_t usrc, uint8_t vsrc,
00109 uint8_t * asrc, int srcstrd,
00110 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00111 uint8_t * adst, int dststrd,
00112 int width, int height, int alphamod, int dochroma,
00113 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00114
00115 void blendconst (uint8_t ysrc, uint8_t usrc, uint8_t vsrc,
00116 uint8_t asrc,
00117 uint8_t * ydst, uint8_t * udst, uint8_t * vdst,
00118 uint8_t * adst, int dststrd,
00119 int width, int height, int dochroma,
00120 int16_t rec_lut[256], uint8_t pow_lut[256][256]);
00121
00122 #ifdef __cplusplus
00123 }
00124 #endif
00125
00126 #endif