# CoreMF runner capability guide

`runAPI` builds workflows through the public application API. Native/source
`runGraph` uses the same CLI parser and options. Availability follows the
delivered engine, dependencies, platform and selected modules; examples need
their own assets/endpoints. This guide groups capabilities rather than listing
every compatibility alias.

| Task                         | Controls                                                                                                                              | What they enable                                                                                                                                                                  |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Choose inputs/outputs        | `-i`, `-o`, `-p`, `-an`, `-av`                                                                                                        | Files, capture, enabled file/network paths, RTC, conversion, remux, playback, recording and streaming.                                                                              |
| Compose graphs               | Repeated inputs/outputs; nested `-i [ ... ]`; `-mf uc`                                                                                | Reusable sub-pipelines, side outputs and branching. With a filter, `-mf uc` exposes decoded/filtered subgraph output so the outer graph can skip another decoder.                 |
| Configure in JSON            | `-j`, `-template`, `-alltemplates`, `-template_v`, `-alltemplates_v`, `-probe`                                                        | Graph/template import, export, generation, verification and optional media probing. Product timelines use the Product importer.                                                   |
| Convert video                | `-s`, `-r`, `--fmt`, `-p fps`, `--fps-mode`                                                                                           | Resolution, frame rate and pixel-format controls; basic/precise/CFR/interpolation modes are pipeline-specific.                                                                    |
| Choose encoders              | `--hw-codec`, `--hw-encoder`, `--hw-decoder`, `--hw-device`, fallback controls                                                        | Software or available hardware backends; explicit fail/fallback behavior. `--hw-zero-copy` requests a compatible hardware-frame decode-to-encode path, not universal GPU interop. |
| Use native Windows H.264 | `-mft`                                                                                                                                | Explicit native H.264 path on Windows, with synchronous CPU/NV12 input. This is separate from automatic hardware-backend selection.                                             |
| Select licensing policy/BYO  | `-gpl`, `-byo`, `-byo-config`                                                                                                         | Restrict native encoder selection or explicitly select a customer executable. Build policy still applies; no customer encoder library loading.                                    |
| Filter video                 | `-f avfilter`, CoreGL/CPU filter names, `-filter-config`                                                                              | Video filter expressions plus GPU/CPU graphics, layouts, keying, text, LUTs, transitions, effects and tone-mapping controls supported by the build.                              |
| Automate production          | `-package`, `-filter-param`, `validate-assets`, `validate-package`                                                                    | Asset-backed production packages, parameter overrides, keyframes/formulas, clocks, missing-input rules, generated graphics and reactive metadata.                                 |
| Process/analyze audio        | `-af`, `-audio-filter-config`                                                                                                         | Effect chains, voice cleanup, EQ/dynamics, delay/reverb, pitch/formant, loudness/program monitoring, beat/fingerprint and metadata sidecars.                                      |
| Run AI extensions            | Selected `-p ai:<algorithm>` or registered aliases; `-filter-config`                                                                  | Processor selection, supported algorithm combinations, analysis-only output, annotated media and structured results. Models/backends require separate selection and rights.       |
| Capture and preview          | `-i screen`, `v=...`, `a=...`, screen selectors, `-p play`/`play-gl`, `-play-sync`, `-show`                                           | Camera/audio/screen or window capture, CPU/GPU preview, audio/video clock choice and supported FPS/level displays.                                                                |
| Control input pacing         | `-re`, `-loop`                                                                                                                        | Source-rate pacing and seekable-input replay. Loop selection is limited to playback/SFU-publishing modes.                                                                         |
| Configure protocol ingest    | RTMP/RTSP/SRT inputs, `-rtsp-transport`, `-rtsp-latency`                                                                              | Listener/transport configuration and bridge to RTC, recording or segmented outputs. Exact source and sink roles matter.                                                           |
| Serve realtime rooms         | `-p sfu`, `sfupub`, `meeting`; room/peer and MCU controls                                                                             | Encoded fan-out, local-source publication, room composition and program recording. Current server workflows are Linux-specific; dynamic server MCU remains development/reference. |
| Configure LL-HLS             | `--part-duration`, `--llhls-segment-duration`, `--llhls-list-size`, `--llhls-storage`, port/timeouts                                  | fMP4 parts/segments, playlist retention, memory/disk storage and optional blocking-reload HTTP serving.                                                                           |
| Create navigation assets     | `-p storyboard` plus JSON sampling/layout controls                                                                                    | Thumbnail sheets and WebVTT coordinates/timing.                                                                                                                                   |
| Extend at runtime            | ABI/script plugin flags, aliases, registration, registries, trust/allowlist/checksum/permission controls                              | Load approved native/Python/JavaScript plugins for video frames, audio sample buffers and matching packet/source/sink contracts. Downloaded plugins execute locally; a URL is not automatic remote isolation.                  |
| Protect media                | Input/output stream-crypto JSON; DRM output/provider/profile/system controls                                                          | Packet-route protection and provider-backed encrypted packaging. Test-provider shortcuts are not production key management.                                                       |
| Inspect the runtime          | `list-inputs`, `list-outputs`, `list-pipelines`, `list-filters`, `list-codecs`, `list-formats`, `list-protocols`, device/GL discovery | Discover the selected build rather than assuming every codec, protocol or device is present.                                                                            |

## Protocol and realtime coverage

CoreMF supports the protocols and container formats enabled in the selected
build, including applicable HTTP(S), RTMP(S), RTSP, SRT and RTP/UDP/TCP paths.
Its additional realtime/delivery components provide:

- RTC/WebRTC send, receive and relay, with signaling and ICE/STUN/TURN setup.
- SFU distribution of encoded publisher tracks to multiple viewers.
- MCU decode/synchronization, video composition, audio mixing and program encode,
  with recording or publication through SFU.
- HLS/DASH adaptive output and dedicated LL-HLS parts, storage and HTTP serving.

SFU/MCU are topologies, not additional wire protocols. WHIP is preview-only in
the current release scope. Server MCU menus remain hidden in release packages.

## Scaling and observability

| Boundary                  | Configuration/behavior                                                                                                                                               |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Source and route work     | `COREMF_SOURCE_THREADS`, `COREMF_ROUTE_THREADS`, `COREMF_ROUTE_BATCH`: shared worker counts and delivery fairness.                                                   |
| Queue memory and overload | `COREMF_ROUTE_QUEUE_MAX` and `COREMF_ROUTE_QUEUE_POLICY`: choose `block`, `drop_oldest`, `drop_newest` or `fail_branch`, with an explicit queue budget.              |
| Room resources            | SFU JSON publisher/viewer/track limits, packet-cache byte/time limits and media-queue budgets. These are controls, not demonstrated capacity figures.                |
| GPU resources             | Runtime/device selection and texture/framebuffer pools; separate graphs/runtimes can target selected devices. Graphics, encoding and inference have different costs. |
| Measurement               | Source/route metrics, `--gl-metrics`, transfer/device audit and supported preview counters; measure latency, queue depth, CPU/GPU, memory and egress together.       |

Set queue limits explicitly for services. The engine's route queue limit defaults
to zero (unbounded); the interactive runner sets a default of 64 when unset.
Bounded worker counts alone do not bound all media buffers or HTTP connections.
Lossless blocking can backpressure upstream; drop/fail policy changes output
semantics. Select policy per workload.

SFU avoids a decode/encode operation for each forwarded viewer; ingest conversion
and MCU composition still consume resources. Room/job sharding, load balancing,
autoscaling, TURN and HTTP distribution are deployment responsibilities. Validate
each server/profile and network load; no universal room size, viewer count or
automatic distributed-cluster claim follows from this option list.

See [media-server workflow](../solutions.html#media-server),
[protocols](../technology.html#protocols),
[protection levels](../technology.html#protection) and
[release scope](../release.html).
