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