* [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).