Mercurial > mplayer.hg
changeset 3020:e5ebde3ebdd6
Minor fixes with the same results
author | nick |
---|---|
date | Tue, 20 Nov 2001 10:34:00 +0000 |
parents | 64ce4a515a78 |
children | 8c765d4a31b8 |
files | drivers/radeon/radeon_vid.c libvo/vesa_lvo.c |
diffstat | 2 files changed, 13 insertions(+), 72 deletions(-) [+] |
line wrap: on
line diff
--- a/drivers/radeon/radeon_vid.c Tue Nov 20 10:00:58 2001 +0000 +++ b/drivers/radeon/radeon_vid.c Tue Nov 20 10:34:00 2001 +0000 @@ -381,7 +381,7 @@ besr.fourcc = config->format; - besr.v_inc = (config->src_height << 20) / XXX_DRW_H; /*9c0e0 -> 9c528*/ + besr.v_inc = (config->src_height << 20) / XXX_DRW_H; h_inc = (config->src_width << 12) / XXX_DRW_W; step_by = 1; @@ -395,7 +395,7 @@ if(is_420) { uint32_t dstPitch,d1line,d2line,d3line; - dstPitch = (XXX_WIDTH + 31) & ~31; /* of luma */ + dstPitch = (XXX_WIDTH + 15) & ~15; /* of luma */ d1line = top * dstPitch; d2line = (XXX_HEIGHT * dstPitch) + ((top >> 1) * (dstPitch >> 1)); d3line = d2line + ((XXX_HEIGHT >> 1) * (dstPitch >> 1)); @@ -439,7 +439,7 @@ left = (left >> 16) & 7; besr.h_inc = h_inc | ((h_inc >> 1) << 16); besr.step_by = step_by | (step_by << 8); - besr.y_x_start = (config->x_org+8) | (config->y_org << 16); /*5c008->5d009*/ + besr.y_x_start = (config->x_org+8) | (config->y_org << 16); besr.y_x_end = (config->x_org + config->dest_width+8) | ((config->y_org + config->dest_height) << 16); besr.p1_blank_lines_at_top = 0x00000fff | ((config->src_height - 1) << 16); besr.p23_blank_lines_at_top = is_420 ? 0x000007ff | ((((config->src_height+1)>>1) - 1) << 16) : 0;
--- a/libvo/vesa_lvo.c Tue Nov 20 10:00:58 2001 +0000 +++ b/libvo/vesa_lvo.c Tue Nov 20 10:34:00 2001 +0000 @@ -26,7 +26,7 @@ #include "../mmx_defs.h" #include "../postproc/rgb2rgb.h" -#define WIDTH_ALIGN 32 /* should be 16 for radeons */ +#define WIDTH_ALIGN 16 /* should be 16 for radeons */ #define NUM_FRAMES 2 static uint8_t *frames[NUM_FRAMES]; @@ -144,56 +144,11 @@ if(lvo_handler != -1) close(lvo_handler); } -static void -CopyData420( - unsigned char *src1, - unsigned char *src2, - unsigned char *src3, - unsigned char *dst1, - unsigned char *dst2, - unsigned char *dst3, - int srcPitch, - int srcPitch2, - int dstPitch, - int h, - int w -){ - int count; - - count = h; - while(count--) { - memcpy(dst1, src1, w); - src1 += srcPitch; - dst1 += dstPitch; - } - - w >>= 1; - h >>= 1; - dstPitch >>= 1; - - count = h; - while(count--) { - memcpy(dst2, src2, w); - src2 += srcPitch2; - dst2 += dstPitch; - } - - count = h; - while(count--) { - memcpy(dst3, src3, w); - src3 += srcPitch2; - dst3 += dstPitch; - } -} - - -uint32_t vlvo_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) +uint32_t vlvo_draw_slice_mga(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,srcpitch; + uint32_t bespitch,bespitch2; int i; bespitch = (mga_vid_config.src_width + (WIDTH_ALIGN-1)) & ~(WIDTH_ALIGN-1); @@ -226,41 +181,27 @@ src+=stride[2]; dest += bespitch2; } -#else + return 0; +} + +uint32_t vlvo_draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y) +{ uint8_t *dst; uint8_t bytpp; + if(verbose > 1) printf("vesa_lvo: vlvo_draw_slice() was called\n"); bytpp = (image_bpp+7)/8; dst = lvo_mem + (image_width * y + x)*bytpp; #ifdef HAVE_RADEON if(src_format == IMGFMT_YV12) - { yv12toyuy2(image[0],image[1],image[2],dst ,w,h,stride[0],stride[1],w*2); - } else #else if(src_format == IMGFMT_YV12) - { - uint32_t dstPitch,d1line,d2line,d3line,d1offset,d2offset,d3offset; - dstPitch = (mga_vid_config.src_width + 15) & ~15; /* of luma */ - d1line = y * dstPitch; - d2line = (mga_vid_config.src_height * dstPitch) + ((y >> 1) * (dstPitch >> 1)); - d3line = d2line + ((mga_vid_config.src_height >> 1) * (dstPitch >> 1)); - - y &= ~1; - - d1offset = (y * dstPitch) + x; - d2offset = d2line + (x >> 1); - d3offset = d3line + (x >> 1); - CopyData420(image[0],image[1],image[2], - dst+d1offset,dst+d2offset,dst+d3offset, - stride[0],stride[1],dstPitch,h,w); - } + vlvo_draw_slice_mga(image,stride,w,h,x,y); else #endif memcpy(dst,image[0],mga_vid_config.frame_size); -#endif - if(verbose > 1) printf("vesa_lvo: vlvo_draw_slice() was called\n"); return 0; }