From e863c304f95ae32da9fed934eb71954363b362bd Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 28 Feb 2002 16:20:58 +0000 Subject: use 4 buffers, fallback to fewer buffers if the video ram isnt large enough git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4895 b3059339-0415-0410-9bf9-f77b7e298cf2 --- vidix/drivers/mach64_vid.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/vidix/drivers/mach64_vid.c b/vidix/drivers/mach64_vid.c index f35fa9bde9..c08c9119c7 100644 --- a/vidix/drivers/mach64_vid.c +++ b/vidix/drivers/mach64_vid.c @@ -843,12 +843,18 @@ int vixQueryFourcc(vidix_fourcc_t *to) int vixConfigPlayback(vidix_playback_t *info) { if(!is_supported_fourcc(info->fourcc)) return ENOSYS; - if(info->num_frames>3) info->num_frames=3; //more than 3 make no sense at the moment but they do work mach64_compute_framesize(info); - mach64_overlay_offset = mach64_ram_size - info->frame_size*info->num_frames; - mach64_overlay_offset &= 0xffff0000; - if(mach64_overlay_offset < 0) return EINVAL; + + if(info->num_frames>4) info->num_frames=4; + for(;info->num_frames>0; info->num_frames--) + { + mach64_overlay_offset = mach64_ram_size - info->frame_size*info->num_frames; + mach64_overlay_offset &= 0xffff0000; + if(mach64_overlay_offset>0) break; + } + if(info->num_frames <= 0) return EINVAL; + info->dga_addr = (char *)mach64_mem_base + mach64_overlay_offset; mach64_vid_init_video(info); return 0; -- cgit v1.2.3