summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-26 17:42:24 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-26 17:42:24 +0000
commit8755d76ce2d1deeb73dc8f47c1e44e40c0c54407 (patch)
tree32fdf2e9897356faed7eb70c2eb0e397a3703d49 /libmpcodecs
parenta7e9bac13210834abd95380e89b5c3dae2336c52 (diff)
downloadmpv-8755d76ce2d1deeb73dc8f47c1e44e40c0c54407.tar.bz2
mpv-8755d76ce2d1deeb73dc8f47c1e44e40c0c54407.tar.xz
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 <jbj@knef.dk> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9111 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vf_bmovl.c15
1 files changed, 12 insertions, 3 deletions
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