On Wednesday 09 May 2007, Lutz Koschorreck wrote:
[snip].

> I have tested the stuff with ivtv-0.10.1 driver and PAL.
> Currently I don't now, if the plugin is also working with NTSC. Please
> test and let me know.
>
> Here some technical details:
> How to patch:
> cd xine-ui-0.99.5
> patch -p1 < "PATHTO"/xine-ui-0.99.5-vidix-ivtv.patch
> cd xine-lib-1.1.6
> patch -p 1 < "PATHTO"/xine-lib-1.1.6-vidix-ivtv.patch
>
> How to set up your environment:
> export FRAMEBUFFER=/dev/fb? (? stands for the framebuffer device you
> want to use)
> fbset -fb /dev/fb? -g 720 576 720 576 32 -t 42158 1 55 1 14 24 2 -rgba
> 8/16,8/8,8/0,8/24 (set console to max resolution (PAL))
> ivtvfbctl -d /dev/fb? -v 0 ("disable" alpha blending)
>
> Now start xinefb and have fun:
> fbxine --stdctl -A alsa -V vidixfb dvd://
>
> It would be great if someone can test the stuff and let me know if it is
> working correctly. If so I will commit the patches to the xine and vidix
> project directly.

A couple of small mistakes regarding dimension handling which can cause the 
image to be scrambled. This patch (for xine-lib) corrects them. The fix also 
removes the need for the fbset command, though you may still want to use it 
to allow video to overscan.

-- 
Ian
--- src/video_out/vidix/drivers/ivtvfb_vid.c.old	2007-05-09 12:31:41.000000000 +0100
+++ src/video_out/vidix/drivers/ivtvfb_vid.c	2007-05-09 12:38:55.000000000 +0100
@@ -394,8 +394,8 @@ int VIDIX_NAME(vixConfigPlayback)(vidix_
 	info->offsets[0] = 0;
 	info->offsets[1] = info->frame_size;
 	info->offset.y = 0;
-	info->offset.u = IVTVMAXWIDTH*IVTVMAXHEIGHT;
-	info->offset.v = IVTVMAXWIDTH*IVTVMAXHEIGHT + (IVTVMAXWIDTH/2)*(IVTVMAXHEIGHT/2);    
+	info->offset.u = info->src.w * info->src.h;
+	info->offset.v = info->offset.u + ((info->src.w * info->src.h)/4);
 	info->dga_addr = memBase = malloc(info->num_frames*info->frame_size);   
 	if(ivtv_verbose)
 	    printf(IVTV_MSG"frame_size: %d, dga_addr: %p\n",
@@ -421,10 +421,10 @@ int VIDIX_NAME(vixPlaybackFrameSelect)(u
 {
 	struct ivtvyuv_ioctl_dma_host_to_ivtv_args args;
 
-	de_macro_y((memBase + (frame * frameSize)), outbuf, srcVideo.w, srcVideo.h, srcVideo.x, srcVideo.y, destVideo.h, destVideo.w);
+	de_macro_y((memBase + (frame * frameSize)), outbuf, srcVideo.w, srcVideo.h, srcVideo.x, srcVideo.y, srcVideo.h, srcVideo.w);
 	de_macro_uv((memBase + (frame * frameSize)) + (srcVideo.w * srcVideo.h) + srcVideo.w * srcVideo.h / 4,
 		(memBase + (frame * frameSize)) + (srcVideo.w * srcVideo.h), outbuf + IVTVMAXWIDTH * IVTVMAXHEIGHT,
-		srcVideo.w,  srcVideo.h, srcVideo.x, srcVideo.y, destVideo.h, destVideo.w);
+		srcVideo.w,  srcVideo.h, srcVideo.x, srcVideo.y, srcVideo.h, srcVideo.w);
 
 	args.y_source = outbuf;
 	args.uv_source = outbuf + (IVTVMAXWIDTH * IVTVMAXHEIGHT);
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to