summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-27 13:00:03 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-27 13:00:03 +0000
commit256c9152fe705f4c7e4e7ec8c6dfa4c67ab539cc (patch)
tree8dd570938b4a073a242c6f8673dd2e949110c033 /libvo
parenta3654508d2f651539b86150f2793e825b17d4d9e (diff)
downloadmpv-256c9152fe705f4c7e4e7ec8c6dfa4c67ab539cc.tar.bz2
mpv-256c9152fe705f4c7e4e7ec8c6dfa4c67ab539cc.tar.xz
Fix ugly borders problem with ati-hack
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28199 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/vo_gl.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index 4f6cb3acea..6560b325fb 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -785,6 +785,18 @@ static uint32_t get_image(mp_image_t *mpi) {
return VO_TRUE;
}
+static void clear_border(uint8_t *dst, int start, int stride, int height, int full_height, int value) {
+ int right_border = stride - start;
+ int bottom_border = full_height - height;
+ while (height > 0) {
+ memset(dst + start, value, right_border);
+ dst += stride;
+ height--;
+ }
+ if (bottom_border > 0)
+ memset(dst, value, stride * bottom_border);
+}
+
static uint32_t draw_image(mp_image_t *mpi) {
int slice = slice_height;
int stride[3];
@@ -802,6 +814,13 @@ static uint32_t draw_image(mp_image_t *mpi) {
memcpy_pic(mpi2.planes[1], mpi->planes[1], mpi->w >> 1, mpi->h >> 1, mpi2.stride[1], mpi->stride[1]);
memcpy_pic(mpi2.planes[2], mpi->planes[2], mpi->w >> 1, mpi->h >> 1, mpi2.stride[2], mpi->stride[2]);
}
+ if (ati_hack) { // since we have to do a full upload we need to clear the borders
+ clear_border(mpi2.planes[0], mpi->w * bpp / 8, mpi2.stride[0], mpi->h, mpi2.height, 0);
+ if (mpi->imgfmt == IMGFMT_YV12) {
+ clear_border(mpi2.planes[1], mpi->w >> 1, mpi2.stride[1], mpi->h >> 1, mpi2.height >> 1, 128);
+ clear_border(mpi2.planes[2], mpi->w >> 1, mpi2.stride[2], mpi->h >> 1, mpi2.height >> 1, 128);
+ }
+ }
mpi = &mpi2;
}
stride[0] = mpi->stride[0]; stride[1] = mpi->stride[1]; stride[2] = mpi->stride[2];