mirror of
https://github.com/azaion/autopilot.git
synced 2026-06-21 14:01:10 +00:00
251ebed1c2
Wires a real ffmpeg-next 8.1 decoder into the frame_ingest lifecycle loop. NVDEC is probed at runtime via h264_cuvid / hevc_cuvid; CUDA-less hosts transparently fall back to software h264 / hevc. Each decoded frame is stamped with capture_ts (taken at packet receipt) and decode_ts (taken after decode returns) so movement_detector sees accurate frame-arrival times. Single-frame decode errors are counted toward decode_errors_total and dropped; the stream is never aborted. Adds new public API on FrameIngestHandle: decoder_backend(), decode_errors_total(), frames_decoded_total(), decode_ms_first_frame(), decode_ms_p50(), decode_ms_p99(). Integration tests under crates/frame_ingest/tests/decoder_pipeline.rs cover AC-1, AC-3, AC-4 end-to-end through the real FfmpegDecoder using libx264-encoded synthetic streams; AC-2 positive (NVDEC selection) is opt-in via --ignored on a CUDA host. AZ-657 lifecycle tests retained via a StubDecoder. Co-authored-by: Cursor <cursoragent@cursor.com>
27 lines
778 B
TOML
27 lines
778 B
TOML
[package]
|
|
name = "frame_ingest"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
authors.workspace = true
|
|
|
|
[dependencies]
|
|
shared = { workspace = true }
|
|
tokio = { workspace = true }
|
|
tracing = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
bytes = { workspace = true }
|
|
serde = { workspace = true }
|
|
parking_lot = { workspace = true }
|
|
# AZ-658: H.264/265 decode via FFmpeg (libavcodec). NVDEC support is
|
|
# probed at runtime by looking up `h264_cuvid` / `hevc_cuvid` through
|
|
# `ffmpeg::codec::decoder::find_by_name`; no separate feature flag is
|
|
# required.
|
|
ffmpeg-next = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tokio = { workspace = true, features = ["test-util"] }
|