Mercurial > mplayer.hg
changeset 22693:b73dca7dbb0f
allow horizontal resolutions >1024 in case we have a G550
(actualy in case mga_vid doesn't deny it)
author | attila |
---|---|
date | Sun, 18 Mar 2007 11:03:34 +0000 |
parents | 2ccbb18bc99f |
children | 595f9fb80827 |
files | libvo/mga_common.c |
diffstat | 1 files changed, 29 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/mga_common.c Sun Mar 18 10:52:41 2007 +0000 +++ b/libvo/mga_common.c Sun Mar 18 11:03:34 2007 +0000 @@ -372,12 +372,6 @@ return (-1); } - if(width>1023 || height >1023) - { - mp_msg(MSGT_VO,MSGL_ERR, MGSTR_LIBVO_MGA_ResolutionTooHigh); - return (-1); - } - mga_vid_config.src_width = width; mga_vid_config.src_height= height; if(!mga_vid_config.dest_width) @@ -389,12 +383,41 @@ mga_vid_config.num_frames=(vo_directrendering && !vo_doublebuffering)?1:3; mga_vid_config.version=MGA_VID_VERSION; + + if(width > 1024 && height > 1024) + { + mp_msg(MSGT_VO,MSGL_ERR, MGSTR_LIBVO_MGA_ResolutionTooHigh); + return (-1); + } else if(height <= 1024) + { + // try whether we have a G550 + int ret; + if(ret = ioctl(f,MGA_VID_CONFIG,&mga_vid_config)) + { + if(mga_vid_config.card_type != MGA_G550) + { + // we don't have a G550, so our resolution is too high + mp_msg(MSGT_VO,MSGL_ERR, MGSTR_LIBVO_MGA_ResolutionTooHigh); + return (-1); + } else { + // there is a deeper problem + // we have a G550, but still couldn't configure mga_vid + perror("Error in mga_vid_config ioctl()"); + mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion); + return -1; + } + // if we arrived here, then we could successfully configure mga_vid + // at this high resolution + } + } else { + // configure mga_vid in case resolution is < 1024x1024 too if (ioctl(f,MGA_VID_CONFIG,&mga_vid_config)) { perror("Error in mga_vid_config ioctl()"); mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_MGA_IncompatibleDriverVersion); return -1; } + } mp_msg(MSGT_VO,MSGL_INFO, MSGTR_LIBVO_MGA_UsingBuffers,mga_vid_config.num_frames);