Structural refactor: pointtracking.py (VideoPointAnnotator, VideoAnnotation, VideoAnnotations) and opticalflow.py (lucas_kanade, lucas_kanade_rstc) relocated to the dustrack package. datanavigator narrows to data-navigation primitives — browsers, asset managers, events; dustrack 1.2.0+ owns its DeepLabCut workflow + the labeling UI end-to-end. All portfolio consumers of dnav.VideoAnnotation / VideoPointAnnotator / lucas_kanade* flip to dustrack.* in lockstep; no transitional re-exports.
Highlights since v1.5.0a1
VideoReader(..., pix_fmt=None)auto-detects monochrome sources — gray-encoded videos decode directly as(H, W)2D arrays instead of round-tripping throughrgb24. ~6× faster sequential decode on 706×558 h265 mono; ~11.5× end-to-end through downstream gray-postprocess loops.VideoReader.fname/.nameexposed on the base class (previously onlyutils.Videocarried them). Enables shared-reader patterns across multiple consumers._QtImagePane.get_view_state()/set_view_state(state)— opaque-blob round-trip of the QGraphicsView transform + scrollbar positions for snapshot/restore across context switches._QtImagePane.set_image()rebuilds scene rect on dimension change — fixes the "loaded video looks zoomed in" symptom when a per-frameset_imagecall gets an array with new dimensions.- Vendored
PyAVReaderIndexed._seek_packetpersistent demux iterator — lifts standalone sequential decode 185 → 268 fps on 720p 1-fpp h264.
Migration
Direct import datanavigator as dnav users of VideoAnnotation / VideoPointAnnotator / lucas_kanade* switch to dustrack:
```python
import dustrack
was: dnav.VideoAnnotation(json_path, video_path).to_signals()
ann = dustrack.VideoAnnotation(json_path, video_path)
signals = ann.to_signals()
was: dnav.VideoPointAnnotator(video, ["pn", "buffer"])
now use DUSTrack instead — direct VPA instantiation is being phased out:
v = dustrack.DUSTrack(video, ["pn", "buffer"])
was: dnav.lucas_kanade(video, start, end, init_points)
from dustrack import lucas_kanade
```
dustrack's datanavigator floor moves to >=1.5.0 so the two releases ship in lockstep.
Full changelog: CHANGELOG.md