Developers

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#

LayerStandard
TransportISO/IEC 13818-1 MPEG-TS (188, 192 and 204-byte packets), PAT/PMT with CRC, PES with PTS/DTS, 33-bit PTS wrap
Metadata carriageMISB ST 1402 synchronous and asynchronous KLV
KLV codingSMPTE ST 336 universal keys, BER lengths, BER-OID local-set tags
Platform and sensorMISB ST 0601 UAS Datalink Local Set, checksum verified
Security markingMISB ST 0102 Security Metadata Local Set
Frame timeMISB ST 0604 precision time stamps in H.264 SEI
Still imageryMIL-STD-2500C NITF 2.1 / NSIF header marking
Boom stateA notional refueling local set (elevation, azimuth, extension, contact, fuel flow) until the tanker's interface control document supplies a key

Security at the door#

  1. The source hash is recorded in a new hash-chained audit log.
  2. 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.
  3. Unmarked imagery with no declared marking is refused.
  4. Imagery above the system's max_classification is refused; only the manifest and audit log are written.
  5. Sensor and frame-center position are removed from telemetry unless policy keeps them.
  6. 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.

ColumnUnitUsed for
tsTime from the first frame (required)
boom_elev_deg, boom_azim_deg, boom_len_mdeg, deg, mBoom geometry; otherwise it is fitted from the image
boom_contact0/1Contact state from the boom
throttle, stick_pitch, stick_roll, pedalnormalizedPilot-input analysis
fuel_rate_lbm, fuel_lblb/min, lbOffload 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.

Was this page helpful?