summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authornick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-16 18:43:25 +0000
committernick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-16 18:43:25 +0000
commite05564919d802e6b291d341e6d01342211b25ee7 (patch)
tree7b15be557bd44552aba5377193a55fe610930b92 /libvo
parentba3a7a4e873273073b8c96e607f424fc191b8f13 (diff)
downloadmpv-e05564919d802e6b291d341e6d01342211b25ee7.tar.bz2
mpv-e05564919d802e6b291d341e6d01342211b25ee7.tar.xz
Xv stuff
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2925 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r--libvo/vesa_lvo.c46
1 files changed, 44 insertions, 2 deletions
diff --git a/libvo/vesa_lvo.c b/libvo/vesa_lvo.c
index 5f0f790c14..2b61ab84ba 100644
--- a/libvo/vesa_lvo.c
+++ b/libvo/vesa_lvo.c
@@ -125,9 +125,11 @@ void vlvo_term( void )
uint32_t vlvo_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
{
+#if 0
+/* original vo_mga stuff */
uint8_t *src;
uint8_t *dest;
- uint32_t bespitch,bespitch2;
+ uint32_t bespitch,bespitch2,srcpitch;
int i;
bespitch = (mga_vid_config.src_width + (WIDTH_ALIGN-1)) & ~(WIDTH_ALIGN-1);
@@ -160,7 +162,47 @@ uint32_t vlvo_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y
src+=stride[2];
dest += bespitch2;
}
-
+#else
+/* vo_xv stuff: slightly better for YV12 on radeon_vid */
+ uint8_t *src;
+ uint8_t *dst;
+ int i;
+
+ dst = lvo_mem + image_width * y + x;
+ src = image[0];
+ if(w==stride[0] && w==image_width) memcpy(dst,src,w*h);
+ else
+ for(i=0;i<h;i++)
+ {
+ memcpy(dst,src,w);
+ src+=stride[0];
+ dst+=image_width;
+ }
+
+ x/=2;y/=2;w/=2;h/=2;
+
+ dst = lvo_mem + image_width * image_height + image_width/2 * y + x;
+ src = image[2];
+ if(w==stride[2] && w==image_width/2) memcpy(dst,src,w*h);
+ else
+ for(i=0;i<h;i++)
+ {
+ memcpy(dst,src,w);
+ src+=stride[2];
+ dst+=image_width/2;
+ }
+ dst = lvo_mem + image_width * image_height * 5 / 4 + image_width/2 * y + x;
+ src = image[1];
+ if(w==stride[1] && w==image_width/2) memcpy(dst,src,w*h);
+ else
+ for(i=0;i<h;i++)
+ {
+ memcpy(dst,src,w);
+ src+=stride[1];
+ dst+=image_width/2;
+ }
+#endif
+ return 0;
}
uint32_t vlvo_draw_frame(uint8_t *src[])