Mercurial > mplayer.hg
changeset 17128:34f870d8e8a8
really clear frames to black instead of grey, and make sure one of those
cleared frames is actually shown (and not a leftover from last film, which
happened at least with ATI cards).
author | reimar |
---|---|
date | Wed, 07 Dec 2005 16:04:14 +0000 |
parents | f650267ecc3a |
children | f1e92bc7f6d1 |
files | libvo/vosub_vidix.c |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vosub_vidix.c Wed Dec 07 15:56:27 2005 +0000 +++ b/libvo/vosub_vidix.c Wed Dec 07 16:04:14 2005 +0000 @@ -404,6 +404,7 @@ unsigned dst_height,unsigned format,unsigned dest_bpp, unsigned vid_w,unsigned vid_h) { + void *tmp, *tmpa; size_t i; int err; uint32_t sstride,apitch; @@ -495,14 +496,22 @@ vidix_mem = vidix_play.dga_addr; - /* select first frame */ - next_frame = 0; -// vdlPlaybackFrameSelect(vidix_handler,next_frame); - + tmp = calloc(image_width, image_height); + tmpa = malloc(image_width * image_height); + memset(tmpa, 1, image_width * image_height); /* clear every frame with correct address and frame_size */ - for (i = 0; i < vidix_play.num_frames; i++) + /* HACK: use draw_alpha to clear Y component */ + for (i = 0; i < vidix_play.num_frames; i++) { + next_frame = i; memset(vidix_mem + vidix_play.offsets[i], 0x80, vidix_play.frame_size); + draw_alpha(0, 0, image_width, image_height, tmp, tmpa, image_width); + } + free(tmp); + free(tmpa); + /* show one of the "clear" frames */ + vidix_flip_page(); + switch(format) { case IMGFMT_YV12: