Mercurial > mplayer.hg
changeset 2924:8350b8c25c02
Xv stuff
author | nick |
---|---|
date | Fri, 16 Nov 2001 18:43:25 +0000 |
parents | 7177ca35ad1a |
children | 49bcb6176569 |
files | libvo/vesa_lvo.c |
diffstat | 1 files changed, 43 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vesa_lvo.c Fri Nov 16 16:44:50 2001 +0000 +++ b/libvo/vesa_lvo.c Fri Nov 16 18:43:25 2001 +0000 @@ -125,9 +125,11 @@ 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 @@ 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[])