Ingest formats
Real recordings enter through aarcv ingest, built on the open standards DoD motion imagery is delivered in. The security decision happens before any imagery is copied.
delivered file ─► sniff ─┬─ MPEG-TS ─► demux ─► KLV ─► ST 0601 / ST 0102 / refueling set
│ └─► H.264 ─► ST 0604 frame time stamps
├─ MP4/MOV/MKV (+ CSV sidecar)
└─ NITF still ─► header marking only
│
settle marking ─► refuse? ──yes──► manifest + audit only, no imagery
│ no
align metadata to frames ─► telemetry.csv (geolocation removed)
copy selected video stream ─► video.mp4 (KLV and tags removed)
▼
sortie.json, manifest.json, audit.jsonl ─► aarcv process
Supported standards#
| Layer | Standard |
|---|---|
| Transport | ISO/IEC 13818-1 MPEG-TS (188, 192 and 204-byte packets), PAT/PMT with CRC, PES with PTS/DTS, 33-bit PTS wrap |
| Metadata carriage | MISB ST 1402 synchronous and asynchronous KLV |
| KLV coding | SMPTE ST 336 universal keys, BER lengths, BER-OID local-set tags |
| Platform and sensor | MISB ST 0601 UAS Datalink Local Set, checksum verified |
| Security marking | MISB ST 0102 Security Metadata Local Set |
| Frame time | MISB ST 0604 precision time stamps in H.264 SEI |
| Still imagery | MIL-STD-2500C NITF 2.1 / NSIF header marking |
| Boom state | A notional refueling local set (elevation, azimuth, extension, contact, fuel flow) until the tanker's interface control document supplies a key |
Security at the door#
- The source hash is recorded in a new hash-chained audit log.
- The marking is the highest of every in-stream ST 0102 set and any marking declared by the sender. A declaration can raise it, never lower it.
- Unmarked imagery with no declared marking is refused.
- Imagery above the system's
max_classificationis refused; only the manifest and audit log are written. - Sensor and frame-center position are removed from telemetry unless policy keeps them.
- The extracted video carries no KLV and no container tags.
Plain video with a telemetry CSV#
For MP4, MOV or MKV without KLV, give a telemetry sidecar and declare the marking. Time is seconds after the first video frame. Every column is optional except t; the more you give, the more the debrief can show.
| Column | Unit | Used for |
|---|---|---|
t | s | Time from the first frame (required) |
boom_elev_deg, boom_azim_deg, boom_len_m | deg, deg, m | Boom geometry; otherwise it is fitted from the image |
boom_contact | 0/1 | Contact state from the boom |
throttle, stick_pitch, stick_roll, pedal | normalized | Pilot-input analysis |
fuel_rate_lbm, fuel_lb | lb/min, lb | Offload context |
aarcv ingest clip.mp4 --telemetry clip.csv --classification UNCLASSIFIED --out pkg/clip
Receiver flight data and 1553 captures#
When the receiver unit supplies recorded flight data or a MIL-STD-1553 bus capture, it is fused with the video estimate of control surfaces and attitude. The bus runs on its own clock; AARCV registers it to the video clock automatically and reports the offset it found, then checks the two sources against each other.
Time alignment#
For each metadata record, in order of preference: its PES PTS; else its ST 0601 time stamp mapped through a fit of ST 0604 frame time stamps to frame PTS; else the PTS of the last video frame before it. The manifest records how many records used each source.
Commands#
# repackage a synthetic sortie the way a recorder would deliver it
aarcv package data/synthetic/nominal --out nominal.ts --klv-mode async
# unpack, check the marking, and run the full pipeline
aarcv ingest nominal.ts --out pkg/nominal --process runs/nominal_4609 --pilot PILOT-01
The KC-46 RVS recording format and boom-state export are not public. The adapters assume nothing they cannot swap: a vendor format is one more container adapter, and stereo eyes are selected by PID until stereo fusion lands.