Hi all,

Good news, it looks like I've cracked it, at least for the 'normal' use 
of ivtv. I can still break it if I continuously change frequency (say 
100 times a second or more), but that is outside the normal behavior of 
linux.

If I run a script that changes frequency three times a second, then with 
the current driver the driver stops working within 30 seconds. When 
running with my fixes I was able to keep it running the whole night 
with only one DMA error, after which it just kept working. This was 
with the same script running, one continuous linux kernel compile, two 
captures from my PVR500 to /dev/null and one 'cat /dev/video1 
>/dev/video17' from my PVR350 (so encoding and decoding at the same 
time).

Besides fixing several timing issues I've also added code to very 
efficiently detect the offset at which the cards DMA engine placed the 
data, so I can with almost no overhead just continue working after a 
DMA error, automatically correcting for the (random) offset. I'm very 
lucky that the offset is always between 0 and 128 bytes, otherwise 
there probably wouldn't have been anything I could do.

I hope to have patches available later today for people to test.

I think I can do even better than what I have now, but that will require 
some substantial work on the driver. And if the changes I have now work 
out, then I'll probably will do these bigger changes only in the trunk 
version of ivtv without backporting them.

Regards,

        Hans

_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to