summaryrefslogtreecommitdiff
path: root/src/video_out/alphablend.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_out/alphablend.h')
-rw-r--r--src/video_out/alphablend.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/video_out/alphablend.h b/src/video_out/alphablend.h
index 974f363d8..dd7f799ea 100644
--- a/src/video_out/alphablend.h
+++ b/src/video_out/alphablend.h
@@ -53,10 +53,22 @@ typedef struct { /* CLUT == Color LookUp Table */
uint8_t foo : 8;
} ATTRIBUTE_PACKED clut_t;
+
#if PRAGMA_PACK
#pragma pack()
#endif
+#define XX44_PALETTE_SIZE 32
+
+typedef struct {
+ unsigned size;
+ unsigned max_used;
+ uint32_t cluts[XX44_PALETTE_SIZE];
+ /* cache palette entries for both colors and clip_colors */
+ int lookup_cache[OVL_PALETTE_SIZE*2];
+} xx44_palette_t;
+
+
void blend_rgb16 (uint8_t * img, vo_overlay_t * img_overl,
int img_width, int img_height,
int dst_width, int dst_height);
@@ -75,4 +87,32 @@ void blend_yuv (uint8_t *dst_base[3], vo_overlay_t * img_overl,
void blend_yuy2 (uint8_t * dst_img, vo_overlay_t * img_overl,
int dst_width, int dst_height, int dst_pitch);
+/*
+ * This function isn't too smart about blending. We want to avoid creating new
+ * colors in the palette as a result from two non-zero colors needed to be
+ * blended. Instead we choose the color with the highest alpha value to be
+ * visible. Some parts of the code taken from the "VeXP" project.
+ */
+
+void blend_xx44 (uint8_t *dst_img, vo_overlay_t *img_overl,
+ int dst_width, int dst_height, int dst_pitch,
+ xx44_palette_t *palette,int ia44);
+
+/*
+ * Functions to handle the xine-specific palette.
+ */
+
+void clear_xx44_palette(xx44_palette_t *p);
+void init_xx44_palette(xx44_palette_t *p, unsigned num_entries);
+void dispose_xx44_palette(xx44_palette_t *p);
+
+/*
+ * Convert the xine-specific palette to something useful.
+ */
+
+void xx44_to_xvmc_palette(const xx44_palette_t *p,unsigned char *xvmc_palette,
+ unsigned first_xx44_entry, unsigned num_xx44_entries,
+ unsigned num_xvmc_components, char *xvmc_components);
+
+
#endif