[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-video
Subject:    Re[2]: [V4L] NVrec release
From:       Eugene Kuznetsov <divx () euro ! ru>
Date:       2001-06-18 11:54:32
[Download RAW message or body]

Hello Justin,

Monday, June 18, 2001, 4:15:07 AM, you wrote:

>> 1. v4l1 core has a fall-through in setting capture colorspace switch()
>> which causes DIVXRec to encore streams with completely wrong picture.

JS> This should not be possible:  There is a switch a little higher up which 
JS> tests the same variable, and defaults to an error exit...  Please let me know 
JS> how this problem manifests itself (how to duplicate it too!) and I will have 
JS> a look.

Here is the defective switch:
switch(pfmt) {
                        case NV_YUV420:
                                (vct->vbufs + vct->nbufs)->buf[1] =
                                        (vct->vbufs + vct->nbufs)->buf[0] +
                                        vct->width * vct->height;
                                (vct->vbufs + vct->nbufs)->buf[2] =
                                        (vct->vbufs + vct->nbufs)->buf[1] +
                                        (vct->width * vct->height) / 4;
                                break;
                        case NV_RGB24:
                                for(j = 1; j < vct->height; j++) {
                                        (vct->vbufs + vct->nbufs)->buf[j] =
                                                (vct->vbufs + vct->nbufs)->buf[j - 1]
                                                + vct->width * 3;
                                }
                //              break;       <<< This line is missing!
                        case NV_YUV422:
                                for(j = 1; j < vct->height; j++) {
                                        (vct->vbufs + vct->nbufs)->buf[j] =
                                                (vct->vbufs + vct->nbufs)->buf[j - 1]
                                                + vct->width * 2;
                                }
                                break;

And here is how it looks without break:
http://divx.euro.ru/bug.htm
Web site is crawling, but I don't have any better place to put it at
the moment ...

>> 2. Something is broken on deeper level. When capturing with
>> bttv 0.8.16 and default module settings, resulting clip looks
>> jerky because each two consecutive frames are pixel-by-pixel the same.
>> If I insert module with 'gbuffers=32' option, I receive a slide show -
>> a picture changes with frequency of ~1 second.

JS> OK - poor documentation on my behalf.  Right at the bottom of README it says, 
JS> use "-N 32" if you are using bttv with 32 buffers (otherwise it falls back to 
JS> copying).

JS> ...

JS> DOH!  Looking through, I see a minor(major) typo: In v4l1_core.c, the line 
JS> that reads:

memcpy((vct->>vbufs + vct->sync)->mem, vct->mmbuf + vct->vmb.offs
ets[i], vct->>framesize);

JS> should read:

memcpy((vct->>vbufs + vct->sync)->mem, vct->mmbuf + vct->vmb.offs
ets[frame], vct->>framesize);

JS> Otherwise you always get frame 0 data.  Sorry - I haven't tested v4l1 
JS> extensively...

Now it works as it should. I haven't tested it with long captures yet.


JS> PS:  I don't suppose you know how to set the search vector range for DivX 
JS> encoding?  The Windoze utils allow you to do it, but I can't figure it out 
JS> under Linux...

As far as I know, search vector range in DivX 3.11 is fixed to +/- 16
pixels and there's no way to change it. What Windoze utils you are
talking about?

-- 
Best regards,
 Eugene
mailto:divx@euro.ru or sparky@projectmayo.com
[Team GADGET]  [Team Two Divided By Zero]




_______________________________________________
Video4linux-list mailing list
Video4linux-list@redhat.com
https://listman.redhat.com/mailman/listinfo/video4linux-list

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic