Skip to content

ADRs tagged api

Auto-generated by scripts/docs/generate-adr-by-tag.sh. Edit ADR Tags: lines to update.

68 ADR(s) carry this tag.

ID Title
ADR-0102 DNN execution-provider selection is ordered + graceful, fp16_io does a host-side cast
ADR-0103 vmaf_sycl_import_d3d11_surface ships as a staging-texture H2D path, not zero-copy
ADR-0104 Compile picture_pool unconditionally and size it for the live-picture set
ADR-0128 Embedded MCP server in libvmaf — SSE + UDS + stdio transports, build-flag-gated
ADR-0135 Port Netflix#1424 — expose built-in VMAF model-version iterator
ADR-0152 vmaf_read_pictures rejects non-monotonic indices
ADR-0154 vmaf_score_pooled returns -EAGAIN for pending features
ADR-0156 CUDA backend: graceful error propagation (Netflix#1420)
ADR-0157 CUDA preallocation memory leak fix + vmaf_cuda_state_free public API (Netflix#1300)
ADR-0170 vmaf_pre extended to 10/12-bit and optional chroma (T6-4)
ADR-0209 Embedded MCP server — scaffold-only audit-first PR (T5-2)
ADR-0238 Vulkan VmafPicture preallocation surface (API parity with CUDA / SYCL)
ADR-0374 Build-time-optional public APIs return -ENOSYS when disabled
ADR-0379 libvmaf Symbol Visibility — Hide Internal Symbols with -fvisibility=hidden
ADR-0402 MCP runtime v2 — UDS transport + real compute_vmaf binding
ADR-0436 MCP server backend-selector parity
ADR-0486 Codify the three-function GPU backend context-API contract in docs
ADR-0550 Auto-resize input plane to NR tiny-model dims + --tiny-resize flag
ADR-0638 MCP P1 surface — vmaf-tune integration, list_extractors, describe_model, progress notifications
ADR-0646 Route Attached DNN Multi-Output Tensors
ADR-0660 Tiny-AI extractors check DNN availability before model paths
ADR-0767 Phase 4b.8 — libvmaf C ABI Break for VMAFx v4.0.0
ADR-0787 0787-libvmaf-api-error-path-audit.md
ADR-0788 Doxygen doc-comment and @thread-safety tags on public C-API
ADR-0797 vmafx-server OpenAPI REST contract
ADR-0804 Add vmaf_context_get_backend — additive ABI introspection
ADR-0806 VmafFeatureDictionary caller-ownership contract
ADR-0928 VmafPicture v2 — explicit per-backend GPU state
ADR-0932 iter.Seq[T] companion APIs for single-pass Go collections
ADR-0933 gRPC streaming for multi-frame scoring (ScoreStream)
ADR-0953 Doxygen public-API build is warning-clean
ADR-0972 Public headers — replace ISO-reserved __VMAF_*__ include guards with LIBVMAF_*_H (Round 27 audit A.1, SEI CERT DCL37-C)
ADR-1032 vmaf_init double-init guard and vmaf_close pointer-contract documentation
ADR-1064 Wire score_fmt option on all vmaf FFmpeg filters
ADR-1166 Harvest stale upstream Netflix/vmaf reports, verify each against the fork, fix what still bites
ADR-1188 Percentile temporal pooling in the public C API
ADR-1199 Order caller-written CUDA pictures once per frame, at the dispatch point
ADR-1288 An MCP tool schema that fails to marshal is fatal, never defaulted
ADR-1315 Drive libvmaf public C API Doxygen warnings to zero and fail closed
ADR-1337 C++ Placement New Visibility — Hide Inline Run-time Symbols
ADR-1359 The CLI maps --feature <cpu-name> to the explicit --backend's twin
ADR-1396 vmaf_init() treats its handle as output-only again
ADR-1429 vmaf_read_pictures() accepts an index that skips values and documents what the motion scores do
ADR-1431 vmaf_read_pictures() owns the pictures it is given on every return
ADR-1520 Feature-vector tiny models request their inputs, score at flush, and fail on a missing input
ADR-1523 HIP twins run on the device of the imported state
ADR-1679 The Metal IOSurface import reads NV12 and P010 surfaces itself, and the FFmpeg filter imports whole frames
ADR-1685 A post-1.0 embedding milestone: zero-copy device-frame import with fences, asynchronous window scores, and an unchanged licence
ADR-1688 The SYCL zero-copy path admits only extractors that compute from the shared luma, and names every other one
ADR-1755 The feature collector owns the models it mounts
ADR-1822 vmaf_picture_convert ships additively, with the source colour as an argument
ADR-1829 RC4 owns the whole device-memory import API, not only the first full Rust metric
ADR-1852 A new VMAFx C API generated from one definition, libvmaf as its compatibility layer, and VMAFx-named FFmpeg filters (RC4)
ADR-1897 VMAFx ABI numbering before 1.0: additions take a patch bump and join the current minor's version node
ADR-1906 VMAFx core API semantics: per-context logging, size negotiation, frame and model references
ADR-1918 Samples above 2^bpc - 1 are invalid input; an opt-in check refuses them
ADR-1929 VMAFx device frames, fences and the import rule: the shared contract the backend lanes implement
ADR-2023 VMAFx device frames on CUDA: one library stream per device, fences on it, release events recorded where the frame is released
ADR-2044 VMAFx option groups generate every scoring surface, and the scoring API is a versioned contract
ADR-2073 The provenance record is canonical JSON with one digest over the configuration and the scores, the library writes it into every report, and --verify-provenance re-runs it
ADR-2074 VMAFx window scores: a completion thread per context, one pooling implementation, the window clock and the in-flight bound
ADR-2090 Derive motion2 / motion3 frame by frame: final once the frame after is scored, the same statements as the flush
ADR-2092 VMAFx device frames on HIP: one library stream per device copies every frame for the twins, dma-bufs as external memory, sync_file checked on the host
ADR-2093 HDR-VMAF groundwork from upstream, with the input colorimetry on the context
ADR-2094 libvmaf.so.3 is a compat library on the exported VMAFx API; the engine compiles its libvmaf bodies under engine names, and backends keep theirs until their lanes land
ADR-2132 HIP imports GL textures through EGL dma-buf export; the runtime's GL interop is not used
ADR-2133 Device import takes 4:2:2 and 4:4:4: semi-planar NV16 / NV24 family and packed Y210 / Y410, one CPU reference, converted on the device
ADR-2949 vmaf_picture_wrap ships with upstream's signature, on vmafx_frame_wrap_host, with the fork's plane rules