The _lut is being indexed by I + Q (16 bits = 65536 entries), however
both samples can be processed independently, resulting in 8-bit LUT.
Saves a bit of RAM and CPU cache.
When size of output buffer was larger than size of input buffer,
uderflow occured because no check on number of avalilable data was done.
This also improves buffer filling for large output buffers, fill output
until anny input is available.
folowing rtl-sdr commit 89f73b183f2dac9c0dd75beca4cf2f77f20c4a36
So far we had 32 * 256KB which was a bit overkill, 15 are more than
enough.
15 was chosen instead of 16 because at least on Linux there seems to be
a system-wide limit of 63 transfers (when they are 256KB large), so 4
dongles can be used on a single machine without lowering the default
transfer number.
Several tests have shown that this is the
highest sample rate where no samples
are being dropped on rtl devices.
Signed-off-by: Steve Markgraf <steve@steve-m.de>
received from Juha Vierinen:
A student here noticed that there is dc bias even with the rafael tuner.
We looked into this issue and found that using 127.4f instead of 127.5f
removes this bias. I assume this is associated with a bug in the digital
downconversion of the RTL chip. This change fixes the problem.
This can be used to enable the direct sampling mode
of an rtlsdr stick, e.g.:
For input 1 (In-phase ADC):
rtl=0,direct_samp=1
For input 2 (Quadrature ADC):
rtl=0,direct_samp=2
Signed-off-by: Steve Markgraf <steve@steve-m.de>
This API allows to acquire a list of devices connected to the host and
creates an argument string ready to be passed to a source object for
cunstruction.
Each device_t entry contains a "label" entry, which holds the generic
device name which may be shown to the user for device selection.
For certain radio hardware extended entries ("name", "serial", "type")
may be available to make bijective device addressing possible.
The argument string for target types "rtl_tcp" and "file" might be
constructed using the osmosdr::device_t class facilities.
Example:
#include <osmosdr_device.h>
#include <osmosdr_source_c.h>
osmosdr::devices_t devs = osmosdr::device::find();
BOOST_FOREACH(osmosdr::device_t &dev, devs) // try to create each dev
osmosdr_source_c_sptr src = osmosdr_make_source_c(dev.to_string());