diff options
author | nick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-11-16 18:43:25 +0000 |
---|---|---|
committer | nick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-11-16 18:43:25 +0000 |
commit | e05564919d802e6b291d341e6d01342211b25ee7 (patch) | |
tree | 7b15be557bd44552aba5377193a55fe610930b92 /libvo/vesa_lvo.c | |
parent | ba3a7a4e873273073b8c96e607f424fc191b8f13 (diff) | |
download | mpv-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/vesa_lvo.c')
-rw-r--r-- | libvo/vesa_lvo.c | 46 |
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[]) |