[MPlayer-dev-eng] [DEVEL-ANNOUNCE] Mach64_vid finishing

Nick Kurshev nickols_k at mail.ru
Sat Feb 16 09:16:12 CET 2002


Hello!

I've implement YUY2 support in vidix's mach64_vid driver.
It works fine for me. But planar fourccs are still not supported.
Indeed, I have rare access to this card, so please be without any
hopes into my address. But if someone wants - he can continue
improving of this driver.
My test configuration was: Cel1-266 + 3DRage IIC AGP 1x (2MB of Video memory).
My test movie is well known 405.avi
I was amazed by video performance of this card!
I've tested scaling on this card at 1024x768 - it gives me realtime
playback in the same time SW scaling on VESA gives me only 2 fps ;)

I've found out that BES of mach64 is similar to BES of Rrage128-Radeon2
cards but it's much simpler and less documented from open source point.

All what should be done by volunteers for planar fourccs - it's playing
with VIDEO_FORMAT video register. But it would be much better to dump out
video registers during DVD playback under Win98 with using gfxdump project:
cvs -z9 -d:pserver:anonymous at cvs.linuxvideo.org:/cvs/livid co -kb gatos-ati
I hope it will solve any problems ;)

Also this patch may help a lot:

--- mach64_vid.c.old	Sat Feb 16 11:09:33 2002
+++ mach64_vid.c	Sat Feb 16 11:13:39 2002
@@ -594,25 +594,25 @@
 	d1line = top*pitch;
 	d2line = src_h*pitch+(d1line>>2);
 	d3line = d2line+((src_h*pitch)>>2);
 	d1line += (left >> 16) & ~15;
 	d2line += (left >> 17) & ~15;
 	d3line += (left >> 17) & ~15;
 	config->offset.y = d1line & ~15;
 	config->offset.v = d2line & ~15;
 	config->offset.u = d3line & ~15;
         besr.vid_buf0_base_adrs=((mach64_overlay_offset+config->offsets[0]+config->offset.y)&~15);
-        besr.vid_buf1_base_adrs=((mach64_overlay_offset+config->offsets[0]+config->offset.v)&~15);
-        besr.vid_buf2_base_adrs=((mach64_overlay_offset+config->offsets[0]+config->offset.u)&~15);
+        besr.vid_buf1_base_adrs=((mach64_overlay_offset+config->offsets[0]+config->offset.v)&~15)|1;
+        besr.vid_buf2_base_adrs=((mach64_overlay_offset+config->offsets[0]+config->offset.u)&~15)|1;
         besr.vid_buf3_base_adrs=((mach64_overlay_offset+config->offsets[1]+config->offset.y)&~15);
-        besr.vid_buf4_base_adrs=((mach64_overlay_offset+config->offsets[1]+config->offset.v)&~15);
-        besr.vid_buf5_base_adrs=((mach64_overlay_offset+config->offsets[1]+config->offset.u)&~15);
+        besr.vid_buf4_base_adrs=((mach64_overlay_offset+config->offsets[1]+config->offset.v)&~15)|1;
+        besr.vid_buf5_base_adrs=((mach64_overlay_offset+config->offsets[1]+config->offset.u)&~15)|1;
 	config->offset.y = ((besr.vid_buf0_base_adrs)&~15) - mach64_overlay_offset;
 	config->offset.v = ((besr.vid_buf1_base_adrs)&~15) - mach64_overlay_offset;
 	config->offset.u = ((besr.vid_buf2_base_adrs)&~15) - mach64_overlay_offset;
 	if(besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV)
 	{
 	  uint32_t tmp;
 	  tmp = config->offset.u;
 	  config->offset.u = config->offset.v;
 	  config->offset.v = tmp;
 	}

But don't forget keep pitch = 32 for planar fourcc! :(

Best regards! Nick

--

"We found out that many TVout problems can be solve like this:
Please attach a TV or VCR to the port and try again.
We hope that helps."
(ATI Inc.)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20020216/ed11e66b/attachment.pgp>


More information about the MPlayer-dev-eng mailing list