[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