1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: AGPL-3.0-only
//! **Large recorded IQ datasets in bounded memory.**
//!
//! Everything here streams: a recording of any length is read and written through fixed
//! staging buffers, so memory use is set by the chunk size, not the file size.
//!
//! * [`format`] - sample encodings: int8, int16 (little- and big-endian), float32, packed
//! 2-bit (three code mappings, two bit orders); complex I/Q, Q/I, or real.
//! * [`stream`] - [`IqReader`] / [`IqWriter`], an [`crate::iq::IqSource`] and
//! [`crate::iq::IqSink`] over any `std::io::Read` / `Write`, plus time-window extraction.
//! * [`resample`] - polyphase decimation and rational resampling, and real-IF to complex
//! baseband conversion.
//! * [`sigmf_stream`] - SigMF recordings streamed with every capture and annotation, and
//! multi-file recordings (SigMF collections) read as one stream with capture boundaries
//! reported. Builds on [`crate::sigmf`].
//! * [`report`] - CSV and JSON writers for per-file results.
//! * `inventory`, `batch`, `cli` (native only) - a dataset-folder inventory with streamed
//! SHA-256, a bounded worker-thread batch runner, and the `kshana iq` command group.
//!
//! Status: the encoders and decoders are checked bit-exact by round trips and against
//! hand-built 2-bit vectors; the resampler and real-IF converter are MODELLED DSP checked
//! against the closed-form response of a tone through a linear filter (see
//! `tests/iq_io.rs`).
pub use ;
pub use BatchResult;
pub use ;
pub use ;
pub use ;