summaryrefslogtreecommitdiffstats
path: root/vidix
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-02-28 16:20:58 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-02-28 16:20:58 +0000
commite863c304f95ae32da9fed934eb71954363b362bd (patch)
tree13d860bb1624ddd851eff84687e91edaddf90627 /vidix
parent57ef06bcf8760d47c6af2e186d66ad3f86130f6f (diff)
downloadmpv-e863c304f95ae32da9fed934eb71954363b362bd.tar.bz2
mpv-e863c304f95ae32da9fed934eb71954363b362bd.tar.xz
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
Diffstat (limited to 'vidix')
-rw-r--r--vidix/drivers/mach64_vid.c14
1 files 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;