/** @page page-capabilities Capabilities @tableofcontents @section overview Overview This section describes the capabilities and fundamentals of the library. @subsection data-records Data Records @note miniSEED data are constructed as records, typically anywhere from 128 to 4096 bytes in length. Each record is independent, identifying the data source, encoding type, etc. in header structures. Reconstructing a continuous time series from an arbitrary number of data records is an excersize for a format reader, e.g. this library. A miniSEED record is represented in the library using the MS3Record structure. This structure is used for both unpacking and packing of miniSEED records. When unpacking with msr3_parse() this structure is populated. When packing with msr3_pack() this structure is used as a template for the resulting data records and as a source of samples to be packed. @subsubsection Data Sample Encodings The library supports all commonly used @ref encoding-values for decoding and a subset of the most common values for encoding. The following data encoding formats are supported for both unpacking and packing: ASCII, INT16, INT32, FLOAT32, FLOAT64, STEIM1 and STEIM2. The INT and FLOAT encodings each have two versions for quantities with a different number of bits of representation. The STEIM compression encodings work with 32-bit integers. The following data encoding formats are supported for unpacking only: GEOSCOPE (24-bit, 16/3 and 16/4 gain ranged), CDSN, SRO and DWWSSN. @subsection traces Traces In order to reconstruct, manage and process continuous trace segments the library provides @ref trace-list functionality. @ref trace-list structures are nested to contain an arbitrary number of identified time series, each containing an arbitrary number continuous time series segments, aka traces. While a trace list is normally used to hold trace information and associated data samples they can also be used without data samples as a means of tracking data coverage without actual sample values. @subsection time-representation Time representation Internally, time stamps are represented as nanoseconds since the Unix/POSIX epoch via the nstime_t data type. A number of functions exist to parse or generate date-time strings to or from this representation. See @ref time-related. *Note:* nanosecond time resolution does not mean the data included this resolution. @subsection time-series-data Time series data formats Time series data samples are supported in a few different formats depending on how they are unpacked or will be packed. Samples can be either ASCII, 32-bit integer, 32-bit floats or 64-bit double precision floats. These types are represented internally using the single-character @ref sample-types. @subsection log-messages Log messages All of the log and diagnostic messages emitted by the library functions use a central logging facility. It is common for programs that use the library to also use these logging functions. Furthermore, the output from these logging interfaces can be controlled by directing output to callback functions. This is useful when the library will be embedded in a larger system with it's own logging facility. See the @ref logging page for more details. */