Em Wed, 18 Sep 2013 01:05:20 +0200
Joerg Riechardt <j.riecha...@gmx.de> escreveu:

> The stv090x driver uses the lookup table for signal strength already, 
> with this patch we use the lookup tables for carrier/noise ratio as well.
> This has the advantage, that values for DVB-S and DVB-S2 are now 
> corresponding, while before they were way off. The values are now 
> proportional to real carrier/noise ratio, while before they were 
> corresponding to register values. So now applications are able to give 
> the user real carrier/noise ratio.
> 
> Because the output has to be within 0x0000...0xFFFF the three negative 
> values for DVB-S2 are omitted. This is no significant loss, because 
> reception is lost at 7.5 dB already (TT S2-1600, Cine S2), so the 
> negative values are not really important, and also for DVB-S they don“t 
> exist.
> 
> Signed-off-by: Joerg Riechardt <j.riecha...@gmx.de>
> 
> Regards,
> Joerg
> 
> --- stv090x.c.bak     2013-09-06 20:59:01.132365872 +0200
> +++ stv090x.c 2013-09-10 03:21:48.884115191 +0200
> @@ -173,9 +173,9 @@
>  
>  /* DVBS2 C/N Lookup table */
>  static const struct stv090x_tab stv090x_s2cn_tab[] = {
> -     { -30, 13348 }, /* -3.0dB */
> -     { -20, 12640 }, /* -2d.0B */
> -     { -10, 11883 }, /* -1.0dB */
> +//   { -30, 13348 }, /* -3.0dB */
> +//   { -20, 12640 }, /* -2d.0B */
> +//   { -10, 11883 }, /* -1.0dB */
>       {   0, 11101 }, /* -0.0dB */
>       {   5, 10718 }, /*  0.5dB */
>       {  10, 10339 }, /*  1.0dB */

Instead of commenting, just truncate the value at the DVBv3 stats
function.

> @@ -3697,9 +3697,10 @@
>                       }
>                       val /= 16;
>                       last = ARRAY_SIZE(stv090x_s2cn_tab) - 1;
> -                     div = stv090x_s2cn_tab[0].read -
> -                           stv090x_s2cn_tab[last].read;
> -                     *cnr = 0xFFFF - ((val * 0xFFFF) / div);
> +                     div = stv090x_s2cn_tab[last].real -
> +                           stv090x_s2cn_tab[0].real;
> +                     val = stv090x_table_lookup(stv090x_s2cn_tab, last, val);
> +                     *cnr = val * 0xFFFF / div;
>               }
>               break;
>  
> @@ -3719,9 +3720,10 @@
>                       }
>                       val /= 16;
>                       last = ARRAY_SIZE(stv090x_s1cn_tab) - 1;
> -                     div = stv090x_s1cn_tab[0].read -
> -                           stv090x_s1cn_tab[last].read;
> -                     *cnr = 0xFFFF - ((val * 0xFFFF) / div);
> +                     div = stv090x_s1cn_tab[last].real -
> +                           stv090x_s1cn_tab[0].real;
> +                     val = stv090x_table_lookup(stv090x_s1cn_tab, last, val);
> +                     *cnr = val * 0xFFFF / div;
>               }

As, with this patch, C/N will be a properly scaled value, the best
is to add support for DVBv5 stats. With DVBv5 stats, the scale can
be sent to userspace.

>               break;
>       default:

Regards,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to