Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Codec Support

Pulled directly from the project README, so this stays in sync automatically — no separate table to fall out of date.

MarkMeaning
First-class (tests for claimed scope)
Zero-Copy path — no payload memcpy (GPU handle or shared CPU buffer; implies ✅)
🆗Best-effort / prototype
🛠️Planned
Attempted and genuinely blocked — no upstream API to build on, a hard version/license conflict, or a real query returned “unsupported.” Not a “ran out of time” 🛠️.
👻Not exercisable yet — license/patent blocked, no target hardware, out of scope, or no device/daemon/session available to run otherwise-tested code against

Cell = encode/decode. One mark means both; A/B means encode / decode.
For now only Windows · Web · Linux are planned; Apple / Android (and Metal / Apple / Qualcomm) are 👻.

Zero-Copy honesty: ⚡ means no payload copy — a GPU handle or a shared CPU buffer, not “GPU only.” Allocating a new Vec and copying into it is 🆗, not ⚡.

OS · CPU

OS codec APIs (WMF, WebCodecs, VA-API, …) fed with CPU buffers (upload may apply); ⚡ here means a shared/borrowed buffer, not software encode.

CodecWindowsWebLinuxAppleAndroid
H.264 / AVC🆗 / 🆗🆗 / 🆗👻👻👻
HEVC / H.265🆗 / 🆗❌ / 🆗🛠️👻👻
AV1🛠️ / 🛠️🆗🛠️👻👻
VP9🆗 / 🆗🆗🛠️👻👻
ProRes👻👻👻👻👻
AAC🆗🆗🛠️👻👻
Opus🆗 / 🆗🛠️🛠️👻👻

Windows Opus: encode runs through mediaway-sw (no inbox encoder MFT exists — verified via MFTEnumEx), wired into WindowsAudioEncoder; decode uses the inbox decoder MFT session (CMSOpusDecMFT), public as mediaway_decoder::windows::WmfOpusDecoder — both verified end-to-end (encode→Ogg→ffprobe 2.000 s + mpv; decode of ffmpeg-produced Opus → exact PCM).

Detail: backends live as #[cfg]-gated modules — mediaway-decoder::{windows, web, linux}, mediaway-encoder::{windows, web, linux}.

OS · GPU

Same OS APIs with GPU surfaces (GpuBufferHandle, DXGI, …). Video only — audio Zero-Copy lives under OS · CPU.

CodecWindowsWebLinuxAppleAndroid
H.264 / AVC⚡ / 🆗🆗🛠️👻👻
HEVC / H.265🆗 / 🆗🛠️🛠️👻👻
AV1🆗 / 🆗🛠️🛠️👻👻
VP9🆗 / 🆗🛠️🛠️👻👻
ProRes👻👻👻👻👻

Detail: mediaway-encoder::{windows, web} (windows = WMF + DX11 Zero-Copy; web = WebCodecs + WebGPU).

GPU — by API

Graphics interop (D3D11, Vulkan, Metal, …) — which API your textures use. Orthogonal to OS · CPU/GPU. Video only.

Adapters: mediaway wgpu module 🆗 (DX12 ↔ WMF GpuCopy bridges).

CodecD3D11D3D12VulkanMetal
H.264 / AVC⚡ / 🆗🆗 / 🛠️🆗 / 🆗👻
HEVC / H.265🆗 / 🆗🆗 / 🛠️🆗 / 🆗👻
AV1🆗 / 🆗🛠️❌ / 🛠️👻
VP9🆗 / 🆗👻👻👻

Detail: mediaway wgpu module · mediaway-encoder::{windows, vulkan} · mediaway-decoder::{windows, vulkan}.

GPU — by vendor

Vendor SDKs (NVENC, AMF, …) — separate from OS + graphics interop. Not the default Auto path. Video only.

  • NVIDIAmediaway-encoder::nvenc (mediaway-encoder), hardware-verified H.264/HEVC/AV1 CPU-upload encode.
  • Intelmediaway-encoder::quicksync (mediaway-encoder), hardware-verified H.264/HEVC encode; AV1 is ❌ (no hardware support on this iGPU generation).
  • AMD — AMF backend 🛠️ deferred (binding/dependency blockers, not an AMD capability gap).
CodecNVIDIAAMDIntelAppleQualcomm
H.264 / AVC🆗🛠️🆗👻👻
HEVC / H.265🆗🛠️🆗👻👻
AV1🆗🛠️👻👻
VP9👻👻👻👻👻

CPU / SW

Pure Rust sans-io software codecs — no C codec FFI (OpenH264, libvpx, …). Opt-in only; never a silent HW fallback. Detail: mediaway-sw (H.264 decode, AV1/Opus encode, PCM, audio processing).

CodecStatus
H.264 / AVC🆗
HEVC / H.265👻
AV1🆗
VP9👻
AAC👻
Opus🆗
PCM / raw🆗