mediadecode-ffmpeg 0.2.0

FFmpeg adapter for the `mediadecode` abstraction layer — implements its `VideoAdapter` / `AudioAdapter` / `SubtitleAdapter` traits and the matching push-style decoder traits, with hardware-acceleration auto-probe across VideoToolbox / VAAPI / NVDEC / D3D11VA and software fallback via ffmpeg-next.
Documentation
[package]
name        = "mediadecode-ffmpeg"
version     = "0.2.0"
edition.workspace      = true
rust-version.workspace = true
license.workspace      = true
description = "FFmpeg adapter for the `mediadecode` abstraction layer — implements its `VideoAdapter` / `AudioAdapter` / `SubtitleAdapter` traits and the matching push-style decoder traits, with hardware-acceleration auto-probe across VideoToolbox / VAAPI / NVDEC / D3D11VA and software fallback via ffmpeg-next."
repository.workspace   = true
homepage.workspace     = true
documentation = "https://docs.rs/mediadecode-ffmpeg"
keywords      = ["ffmpeg", "decoder", "video", "audio", "mediadecode"]
categories    = ["multimedia", "multimedia::video", "multimedia::audio"]

[features]
default = ["std"]
# `std` adds `mediadecode/default` (the core's `std` feature)
# on top of `mediadecode/alloc` already pinned via dep
# features below. The adapter unconditionally uses
# alloc-gated types (`AudioChannelLayout`,
# `SubtitlePayload::Bitmap`, etc.) so `alloc` cannot be
# optional — pinning it via the dep features keeps
# `--no-default-features` builds compiling.
std     = ["mediadecode/default"]
alloc   = []

[dependencies]
mediadecode = { workspace = true, features = ["alloc"] }
ffmpeg-next = { workspace = true }
smol_str    = { workspace = true }
thiserror   = { workspace = true }
tracing     = { workspace = true }
libc        = { workspace = true }

[dev-dependencies]
criterion = { workspace = true }

[[example]]
name = "decode"
path = "examples/decode.rs"

[[example]]
name = "decode_via_trait"
path = "examples/decode_via_trait.rs"

[[bench]]
name = "decode"
path = "benches/decode.rs"
harness = false

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lints]
workspace = true