From 8755d76ce2d1deeb73dc8f47c1e44e40c0c54407 Mon Sep 17 00:00:00 2001 From: arpi Date: Sun, 26 Jan 2003 17:42:24 +0000 Subject: This is a simple patch to change the alpha blending code in bmovl to use integers instead of floating point. It speeds it up by about 400% meaning that it's now possible to apply alpha blending to a whole 1024x768 image on my 1266MHz PIII. Jonas Jensen git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9111 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vf_bmovl.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'libmpcodecs/vf_bmovl.c') diff --git a/libmpcodecs/vf_bmovl.c b/libmpcodecs/vf_bmovl.c index 336f3de294..5d3a93e177 100644 --- a/libmpcodecs/vf_bmovl.c +++ b/libmpcodecs/vf_bmovl.c @@ -395,11 +395,20 @@ put_image(struct vf_instance_s* vf, mp_image_t* mpi){ dmpi->planes[2][pos] = vf->priv->bitmap.v[pos]; } } else { // Alphablended pixel - dmpi->planes[0][pos] = (dmpi->planes[0][pos]*(1.0-(alpha/255.0))) + (vf->priv->bitmap.y[pos]*(alpha/255.0)); + dmpi->planes[0][pos] = + ((255 - alpha) * (int)dmpi->planes[0][pos] + + alpha * (int)vf->priv->bitmap.y[pos]) >> 8; + if ((ypos%2) && (xpos%2)) { pos = ( (ypos/2) * dmpi->stride[1] ) + (xpos/2); - dmpi->planes[1][pos] = (dmpi->planes[1][pos]*(1.0-(alpha/255.0))) + (vf->priv->bitmap.u[pos]*(alpha/255.0)); - dmpi->planes[2][pos] = (dmpi->planes[2][pos]*(1.0-(alpha/255.0))) + (vf->priv->bitmap.v[pos]*(alpha/255.0)); + + dmpi->planes[1][pos] = + ((255 - alpha) * (int)dmpi->planes[1][pos] + + alpha * (int)vf->priv->bitmap.u[pos]) >> 8; + + dmpi->planes[2][pos] = + ((255 - alpha) * (int)dmpi->planes[2][pos] + + alpha * (int)vf->priv->bitmap.v[pos]) >> 8; } } } // for xpos -- cgit v1.2.3