sampleHostTimeNs
The host time (System.nanoTime(), the clock of EegChunk.hostTimeNs) at which device sample sample was taken, from the headset's own clock — the timestamp of that sample for LSL or any other consumer that wants the moment of acquisition rather than of arrival. sample is the device's sample counter, as the packet footers count it and as sampleIndexAt returns it (unsigned 32-bit, wrapping at 2^32).
It is the instant the time-sync fit puts at sample position sample + SAMPLE_INSTANT_OFFSET: sample n's conversion ends (its DRDY) at position n, and the sample's value is stamped half a conversion later. The half was calibrated against a hardware pulse on the digital input, as the vendor C core's Board uses the same convention: with it, a pulse's edge lands on its sample to within about a millisecond (+0.4 ± 1.2 ms), where a timestamp taken when the chunk reached the phone is tens of milliseconds late and jitters by several.
Null when no stream is running, in impedance mode (its counter jumps a sweep at a time and no sample point is ever taken), or when there is no valid device-clock fit: firmware before 3.8.0, too few or too old pings, or a sample too far ahead of the newest ping. There is no packet-timing fallback: a time from the arrival of packets would be exactly the late, jittering stamp this exists to replace.