[mpeg2] Artefacts in TS with kfir
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Sun Feb 20 11:34:33 CET 2005
Anssi Hannula wrote:
> Klaus Schmidinger wrote:
> ...
>> When I load the kfir driver with
>>
>> insmod kfir.ko vidinput=0 vidrate=3000000 debug=0 streamtype=4
>>
>> so that I get a Transport Stream, and then open the /dev/video device
>> for reading, I get a perfectly ok TS. However, if I close /dev/video
>> and open it again, the video resulting from the TS shows block
>> artefacts at the bottom of the screen. Every time I repeat this
>> close/open procedure, the area that is distorted grows further
>> up, until after some 5 or so cycles the entire screen is full
>> of artefacts (and there are also sound distortions).
>>
>> Only rmmod/insmod of kfir.ko fixes this, which means that I have
>> to unload/load the driver before every recording.
>>
>> Does anybody (Anssi?) have any idea what might be the cause for this?
>>
>
> Well, let's try to see if some device initializing helps. Apply the
> attached patch (assigns some initialization functions to ioctl's), and
> between /dev/video openings use the kfirtester.c:
>
> ./kfirtester /dev/video0 a b c d e f g h
>
> Every letter runs the initialization function assigned to that letter,
> so if the stream is ok after the command, take some letter off and open
> the device to see if the stream is still ok. Continue until found what
> is the letter(s) required for correct stream. This way we see in what
> function is the required initialization routine in.
First I had to add a pair of braces to make it compile (see below).
Then I did as you suggested, but even the full "a b c d e f g h" didn't
help. The picture was always black after that (no data at all).
I then called kfirtester with each letter separately (each test after an
rmmod/insmod sequence), but none of them helped.
Just for clarity: my test sequence was always
switch VDR away from the kfir channel
rmmod kfir
insmod kfir.ko vidinput=0 vidrate=3000000 debug=1 streamtype=4
switch VDR to the kfir channel
--> picture ok
switch VDR away from the kfir channel
switch VDR to the kfir channel
--> artefacts
switch VDR away from the kfir channel
./kfirtester [ with various parameters ]
switch VDR to the kfir channel
--> no picture at all
Anything else I might test?
Klaus
> ------------------------------------------------------------------------
>
> --- kfir/driver/kfir.c 2005-02-19 17:17:38.000000000 +0200
> +++ kfir-debug-disto/driver/kfir.c 2005-02-19 17:24:43.000000000 +0200
> @@ -2492,28 +2492,42 @@ static int kfir_do_ioctl(struct inode *i
> }
>
> case VIDIOCSWIN:
> - return -EINVAL;
> + InitParams(kfir);
> + return 0;
>
> case VIDIOCGWIN:
> - return -EINVAL;
I had to insert a '{' here...
> + u32 val;
> + /* Disable PLX PCI interrupt */
> + val = rplxl(PLX9054_INT_CNTRL_STS);
> + val &= ~PCI_INT_ENABLE;
> + wplxl(PLX9054_INT_CNTRL_STS, val);
> +
> + return 0;
...and a '}' here to make it compile.
>
> case VIDIOCCAPTURE:
> - return -EINVAL;
> + AlteraLoadMicro(kfir);
> +
> + return 0;
> ...
More information about the mpeg2
mailing list