Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Possible bug in dvb_frontend.c [Was: "Video datastream brocken" - origin (maybe) found]



Wolfgang Fritz wrote:
> 
> What I find strange is that dvb_frontend_thread adds an FE event while it is in FSM state
> FESTATE_RETUNE. If I understand the code correctly, nothing has happened to the hardware up to now
> and the thus the FE state reflects the last state of the previous tuning. This does not make sense
> to me. I attach a patch that resets the FE state to 0 and does not add an event if the FSM is in
> state FESTATE_RETUNE. It removes the "spike" and otherwise seems to work as before.

> --- dvb_frontend.orig.c	2004-08-01 12:32:44.000000000 +0200
> +++ dvb_frontend.c	2004-08-01 13:13:27.000000000 +0200
> @@ -520,10 +520,14 @@
>  		}
>  	    
>  		// get the frontend status
> -		dvb_frontend_internal_ioctl (&fe->frontend, FE_READ_STATUS, &s);
> -		if (s != fe->status)
> -			dvb_frontend_add_event (fe, s);
> -
> +		if (fe->state & FESTATE_RETUNE) {
> +			s = 0;
> +		} else {
> +			dvb_frontend_internal_ioctl (&fe->frontend, FE_READ_STATUS, &s);
> +			if (s != fe->status) {
> +				dvb_frontend_add_event (fe, s);
> +			}
> +		}
>  		// if we're not tuned, and we have a lock, move to the TUNED state
>  		if ((fe->state & FESTATE_WAITFORLOCK) && (s & FE_HAS_LOCK)) {
>  			update_delay(&quality, &delay, fe->min_delay, s & FE_HAS_LOCK);


This patch looks good to me.

Comitted to CVS.

Thanks,
Johannes




Home | Main Index | Thread Index