summaryrefslogtreecommitdiff
path: root/src/video_out/video_out_pgx64.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_out/video_out_pgx64.c')
-rw-r--r--src/video_out/video_out_pgx64.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index ce637ebdc..d6409110d 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_pgx64.c,v 1.70 2004/09/22 20:29:16 miguelfreitas Exp $
+ * $Id: video_out_pgx64.c,v 1.71 2004/11/24 16:11:05 mroi Exp $
*
* video_out_pgx64.c, Sun XVR100/PGX64/PGX24 output plugin for xine
*
@@ -251,6 +251,8 @@ typedef struct {
buf_mode_t buf_mode;
int multibuf_en, dblbuf_select, delivered_format;
int colour_key, colour_key_rgb, brightness, saturation, deinterlace_en;
+
+ alphablend_t alphablend_extra_data;
} pgx64_driver_t;
/*
@@ -1080,12 +1082,12 @@ static void pgx64_overlay_blend(vo_driver_t *this_gen, vo_frame_t *frame_gen, vo
/* FIXME: Implement out of place alphablending functions for better performance */
switch (frame->format) {
case XINE_IMGFMT_YV12: {
- blend_yuv(frame->buffer_ptrs, overlay, frame->width, frame->height, frame->vo_frame.pitches);
+ blend_yuv(frame->buffer_ptrs, overlay, frame->width, frame->height, frame->vo_frame.pitches, &this->alphablend_extra_data);
}
break;
case XINE_IMGFMT_YUY2: {
- blend_yuy2(frame->buffer_ptrs[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0]);
+ blend_yuy2(frame->buffer_ptrs[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0], &this->alphablend_extra_data);
}
break;
}
@@ -1093,12 +1095,12 @@ static void pgx64_overlay_blend(vo_driver_t *this_gen, vo_frame_t *frame_gen, vo
else {
switch (frame->format) {
case XINE_IMGFMT_YV12: {
- blend_yuv(frame->vo_frame.base, overlay, frame->width, frame->height, frame->vo_frame.pitches);
+ blend_yuv(frame->vo_frame.base, overlay, frame->width, frame->height, frame->vo_frame.pitches, &this->alphablend_extra_data);
}
break;
case XINE_IMGFMT_YUY2: {
- blend_yuy2(frame->vo_frame.base[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0]);
+ blend_yuy2(frame->vo_frame.base[0], overlay, frame->width, frame->height, frame->vo_frame.pitches[0], &this->alphablend_extra_data);
}
break;
}
@@ -1305,6 +1307,9 @@ static void pgx64_dispose(vo_driver_t *this_gen)
}
close(this->devfd);
+
+ _x_alphablend_free(&this->alphablend_extra_data);
+
free(this);
}
@@ -1359,6 +1364,8 @@ static vo_driver_t *pgx64_init_driver(video_driver_class_t *class_gen, const voi
return NULL;
}
+ _x_alphablend_init(&this->alphablend_extra_data, class->xine);
+
this->vo_driver.get_capabilities = pgx64_get_capabilities;
this->vo_driver.alloc_frame = pgx64_alloc_frame;
this->vo_driver.update_frame_format = pgx64_update_frame_format;