diff options
Diffstat (limited to 'src/video_out/video_out_pgx64.c')
-rw-r--r-- | src/video_out/video_out_pgx64.c | 17 |
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; |