* [PATCH] stv090x: use lookup tables for carrier/noise ratio
@ 2013-09-17 23:05 Joerg Riechardt
2014-11-11 10:28 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 3+ messages in thread
From: Joerg Riechardt @ 2013-09-17 23:05 UTC (permalink / raw)
To: linux-media
[-- Attachment #1: Type: text/plain, Size: 810 bytes --]
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.riechardt@gmx.de>
Regards,
Joerg
[-- Attachment #2: stv090x.c.diff --]
[-- Type: text/plain, Size: 1294 bytes --]
--- 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 */
@@ -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;
}
break;
default:
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] stv090x: use lookup tables for carrier/noise ratio
2013-09-17 23:05 [PATCH] stv090x: use lookup tables for carrier/noise ratio Joerg Riechardt
@ 2014-11-11 10:28 ` Mauro Carvalho Chehab
2015-08-29 15:02 ` Joerg Riechardt
0 siblings, 1 reply; 3+ messages in thread
From: Mauro Carvalho Chehab @ 2014-11-11 10:28 UTC (permalink / raw)
To: Joerg Riechardt; +Cc: linux-media
Em Wed, 18 Sep 2013 01:05:20 +0200
Joerg Riechardt <J.Riechardt@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.riechardt@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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] stv090x: use lookup tables for carrier/noise ratio
2014-11-11 10:28 ` Mauro Carvalho Chehab
@ 2015-08-29 15:02 ` Joerg Riechardt
0 siblings, 0 replies; 3+ messages in thread
From: Joerg Riechardt @ 2015-08-29 15:02 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: linux-media
[-- Attachment #1: Type: text/plain, Size: 2909 bytes --]
Am 11.11.2014 um 11:28 schrieb Mauro Carvalho Chehab:
> Em Wed, 18 Sep 2013 01:05:20 +0200
> Joerg Riechardt <J.Riechardt@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.riechardt@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.
Ok, done.
Changed patch attached.
>
>> @@ -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.
Sorry, I have no plans to add DVBv5 stats, although I agree, it would be
nice, if someone did.
Signed-off-by: Joerg Riechardt <j.riechardt@gmx.de>
Regards,
Joerg
>
>> break;
>> default:
>
> Regards,
> Mauro
>
[-- Attachment #2: stv090x-use-lookup-tables-for-carrier-noise-ratio.v2.patch --]
[-- Type: text/plain, Size: 966 bytes --]
diff -Nru A/stv090x.c B/stv090x.c
--- A/stv090x.c 2015-06-25 14:33:58.000000000 +0200
+++ B/stv090x.c 2015-08-29 16:07:44.889861230 +0200
@@ -3726,9 +3726,12 @@
}
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[3].real;
+ val = stv090x_table_lookup(stv090x_s2cn_tab, last, val);
+ if (val < 0)
+ val = 0;
+ *cnr = val * 0xFFFF / div;
}
break;
@@ -3748,9 +3751,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;
}
break;
default:
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-08-29 15:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-17 23:05 [PATCH] stv090x: use lookup tables for carrier/noise ratio Joerg Riechardt
2014-11-11 10:28 ` Mauro Carvalho Chehab
2015-08-29 15:02 ` Joerg Riechardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).