On Wed, 2006-04-12 at 01:09 -0500, Mac Michaels wrote: > > 2) That the format of the report be an integer > > value representing the SNR > > SNR is not in the "Video for Linux Two API Specification > Draft 0.13". > No, SNR is mostly a concern to the digital receivers. So it is in the DVB API. Hence my discussion of "frontends"; and the post to the DVB list. The digital receivers I've dealt with recently don't give a way to read signal strength. They give a formula for calculating the SNR from the performance of the decoder. Hence an SNR value can have meaning, but a signal level derived from an SNR value needs to be assigned meaning because we would need to know N to get a meaningful S number. > > to two significant digits. > > i.e. 32.15dB would be reported as 3215. > > I assume that "integer" means signed integer as the dB value > reported by some cards can have a negative value for SNR > when the signal is less than the noise. > yes. > Is it really important to compute SNR to 0.01 precision? > This makes the logarithm lookup table much larger. Floating > point calculations are not permitted in kernel code so you > must use some sort of lookup. > Please look at the "broken" code in the or51* frontends. This appears to be a good compromise between table size and computational overhead and produces dB calculations to 2 sig figs. (It just doesn't produce the right calculations right now) This granularity is useful especially when making a signal strength estimate based off it. > > 3) For cards that don't provide signal strength directly > > (read from a register), the strength be calculated from > > the SNR by mapping 30dB SNR to full scale signal. > > I am confused by this part of the proposal. Is the value > signal strength in dB x 100 or is it a percentage of full > scale? How do you tell the application that the signal > strength is in dB or percentage? It can vary by driver > according to this proposal. > Signal strength as currently defined (DVB) is a % of a full scale unsigned integer. so 0x0000 is 0% and 0xffff is 100% but many cards just read a noise value (often the same value for SNR) and invert the bits indicating small noise => better signal; big noise=>crappy signal. A logarithmic scale is needed to make these numbers useful in antenna alignment and tuning optimization. > I did not find any reference to SNR in the "Video for Linux > Two API Specification Draft 0.13". Is this ever returned? Because SNR is a DVB API call. > > 1) Move the integer log functions from the or51* modules > > into a module called ilog10 > > 2) Fix the functions to work properly > > 3) Change the lgdt330x, or51211, and or51132 modules to > > report SNR in this manner > > 4) Change the above modules to report signal level based > > on the SNR with 30dB SNR = full scale in the report. > > Full scale is not a fixed number here. It depends upon the > maximum value of SNR that the chip can return. This value > is also a function of the decoding mode (VSB or QAM) for > the lgdt330x family, The driver author can determine the > maximum SNR value and then normalize the result to full > scale. Which is why the proposal "fixed" full scale at 30dB SNR. This allows for comparison between cards that report SNR and signal strength in this manner. There is an SNR above which your reception performance will not noticeably improve so it is possible to be close to the transmitter and have a good number of your stations pegged at 100% signal strength. Without a standard, cards that can accept a wider range of signals will appear to perform worse than cards with much less headroom. If 100% for one card is 40dB (max SNR) and 100% for another card is 20dB (max SNR) with both card's 0% at 0dB - FTSOA, then when the received signal is at 19dB SNR the card with less headroom will report that the signal strength is 95% while the other card will report less than 50%. (Appears to have poorer reception.) Granted the 30dB number comes from imperical testing of several cards using OTA ATSC in the US. But that definition is at least a starting point Rusty _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb