mediaway-encoder 0.1.2

Hardware-accelerated video/audio encoding (OS-native backends)
docs.rs failed to build mediaway-encoder-0.1.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

mediaway-encoder

Status: early development (0.x). Not recommended for production; public APIs may change without notice. Part of the Mediaway media stack.

Hardware-accelerated video and audio encoding: the VideoEncoder / AudioEncoder traits, the auto selection layer (AutoVideoEncodeConfig, path classes from Zero-Copy down to software), and per-platform backends — Windows WMF (H.264/AAC, DX11 Zero-Copy), NVIDIA NVENC, Intel Quick Sync (via oneVPL), Vulkan Video, WebCodecs (wasm), and VA-API on Linux. Feature-gated audio / video for slim builds.

Quick start

use mediaway_common::{CodecKind, PixelFormat, Rational, VideoInputPreference};
use mediaway_encoder::{VideoEncoder, VideoEncoderConfig};
use mediaway_encoder::windows::WindowsVideoEncoder;

let config = VideoEncoderConfig {
    codec: CodecKind::H264,
    width: 1920, height: 1080,
    time_base: Rational::new(1, 30),
    bitrate_bps: 8_000_000,
    pixel_format: PixelFormat::Nv12,
    input: VideoInputPreference::CpuUploadOk,
    gpu_device: None,
};

let mut encoder = WindowsVideoEncoder::open(&config)?; // WMF session
encoder.push_frame(&nv12_frame)?;
while let Some(packet) = encoder.poll_packet()? { /* H.264 packets */ }
encoder.flush()?;

For Zero-Copy GPU input, set input: VideoInputPreference::ZeroCopyGpu and pass the matching gpu_device — or use mediaway::platform::AutoEncoder::open to let Mediaway pick the best path.

Status

Status marks: ✅ first-class (tests for claimed scope) · ⚡ Zero-Copy path (no payload copy; implies ✅) · 🆗 best-effort / prototype · 🛠️ planned · ❌ attempted and genuinely blocked · 👻 not exercisable yet (no hardware / device / session available)

Area Status Notes
VideoEncoder / AudioEncoder traits Streaming push/poll API
Windows WMF H.264 encode CPU upload + DX11 texture Zero-Copy; AAC encode
NVIDIA NVENC Hardware-verified H.264 / HEVC / AV1 (CPU upload)
Intel Quick Sync (oneVPL) Hardware-verified H.264 / HEVC; AV1 not supported on tested iGPU
Vulkan Video encode Hardware-verified H.264 + HEVC; AV1 implemented, driver-blocked
WebCodecs encode (wasm32) CPU + GPUTexture Zero-Copy via WebGPU canvas
Linux VA-API H.264 (CPU upload) 👻 Implemented; zero real-hardware verification yet
auto readback / software path classes 🛠️ Policy bits recognized; honest NoBackend error today

Docs

  • docs/roadmap.md — stages, deferred items, design decisions
  • mediaway — convenience pipeline (EncodeSession) over this crate
  • Root README — codec support matrices (OS / GPU / vendor)

Contributing

Contributions are welcome — open an issue or pull request at github.com/nyxways/mediaway.

License

MIT OR Apache-2.0.