Hey Markus,

On Thu, 2003-01-23 at 09:51, Markus Nilsson wrote:
>       //Store params
>       bp.norm = 0; //PAL
>       bp.quality = 100;
>       bp.field_per_buff = 1;
>       bp.img_width = 352;
>       bp.img_height = 240;
>       if (ioctl(vid_fd, MJPIOC_S_PARAMS, &bp) < 0) {
>               cout << "***Error setting video parameters" << endl << "::" << 
>strerror(errno) << endl;
>       }

That's wrong. You need to set the width/height of the *unscaled* frame,
so 704/240 (field height!), and then use HorDcm/VerDcm/TmpDcm to scale
the frame to full size or double field/frame, in this case
bp.decimation=0 (which means 'manual' instead of 'auto'), bp.HorDcm=2,
bp.VerDcm=1, bp.TmpDcm=2  (see the API description provided in the
kernel package).

>       /* REQBUFS */
>       if(ioctl(vid_fd, MJPIOC_REQBUFS, &vm)<0) {
>               cout << "***Error requesting buffers" << endl << "::" << 
>strerror(errno) << endl;
>       }
>       /* mmap */
>       vm.frames = 5;
>       vm.size = 352*240*3*5; 

First set the vm.count and vm.size, then request buffers, you're doing
it the other way around. Your vm.size is a bit large, by the way (128k
is enough for this size), and vm.size is the size *per buffer*, not the
total size (again, see the API description provided in the kernel
package).

> void PS_VideoDriver::update() {

Looks good to me. :-).

Ronald

-- 
Ronald Bultje <[EMAIL PROTECTED]>
Linux Video/Multimedia developer



--
video4linux-list mailing list
Unsubscribe mailto:[EMAIL PROTECTED]?subject=unsubscribe
https://listman.redhat.com/mailman/listinfo/video4linux-list

Reply via email to