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

Build #3292858 2026-05-15 05:36:47

# rustc version rustc 1.97.0-nightly (7c3c88f42 2026-05-14)

# docs.rs version docsrs 0.0.0 (e3981f6f5e851656470d52001364bbb946056a06 2026-05-14 )

# build log [INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace-builder4/builds/mediadecode-ffmpeg-0.2.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace-builder4/builds/mediadecode-ffmpeg-0.2.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace-builder4/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace-builder4/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "6442450944" "--cpuset-cpus" "26-31" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "sleep" "infinity", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51 [INFO] running `Command { std: "docker" "start" "a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "--user" "1001:1001" "a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--all-features" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20260514-1.97.0-nightly-7c3c88f42\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }` [INFO] [stderr] warning: Rustdoc did not scrape the following examples because they require dev-dependencies: decode, decode_via_trait [INFO] [stderr] If you want Rustdoc to scrape these examples, then add `doc-scrape-examples = true` [INFO] [stderr] to the [[example]] target configuration of at least one example. [INFO] [stderr] warning: target filter specified, but no targets matched; this is a no-op [INFO] [stderr] Documenting mediadecode-ffmpeg v0.2.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: public documentation for `Backend` links to private item `probe_order` [INFO] [stderr] --> src/backend.rs:6:38 [INFO] [stderr] | [INFO] [stderr] 6 | /// out of scope. If no backend in [`probe_order`] for the current platform [INFO] [stderr] | ^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] = note: `#[warn(rustdoc::private_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `mediadecode::VideoPacket` [INFO] [stderr] --> src/boundary.rs:220:41 [INFO] [stderr] | [INFO] [stderr] 220 | /// Builds an `ffmpeg::Packet` from a [`mediadecode::VideoPacket`] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ no item named `VideoPacket` in module `mediadecode` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `mediadecode::AudioPacket` [INFO] [stderr] --> src/boundary.rs:251:41 [INFO] [stderr] | [INFO] [stderr] 251 | /// Builds an `ffmpeg::Packet` from a [`mediadecode::AudioPacket`]. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ no item named `AudioPacket` in module `mediadecode` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `mediadecode::SubtitlePacket` [INFO] [stderr] --> src/boundary.rs:273:41 [INFO] [stderr] | [INFO] [stderr] 273 | /// Builds an `ffmpeg::Packet` from a [`mediadecode::SubtitlePacket`]. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no item named `SubtitlePacket` in module `mediadecode` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `ffmpeg::Packet` [INFO] [stderr] --> src/boundary.rs:296:24 [INFO] [stderr] | [INFO] [stderr] 296 | /// Wraps a borrowed [`ffmpeg::Packet`] as a [INFO] [stderr] | ^^^^^^^^^^^^^^ no item named `ffmpeg` in scope [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `ffmpeg::Packet` [INFO] [stderr] --> src/boundary.rs:325:24 [INFO] [stderr] | [INFO] [stderr] 325 | /// Wraps a borrowed [`ffmpeg::Packet`] as a [INFO] [stderr] | ^^^^^^^^^^^^^^ no item named `ffmpeg` in scope [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `ffmpeg::Packet` [INFO] [stderr] --> src/boundary.rs:348:24 [INFO] [stderr] | [INFO] [stderr] 348 | /// Wraps a borrowed [`ffmpeg::Packet`] as a [INFO] [stderr] | ^^^^^^^^^^^^^^ no item named `ffmpeg` in scope [INFO] [stderr] [INFO] [stderr] warning: public documentation for `with_max_probe_pending_bytes` links to private item `DEFAULT_MAX_PROBE_PENDING_BYTES` [INFO] [stderr] --> src/decoder.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | /// [`DEFAULT_MAX_PROBE_PENDING_BYTES`]. Use a higher value when targeting [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `send_packet` links to private item `MAX_PROBE_PACKET_SIDE_DATA_ENTRIES` [INFO] [stderr] --> src/decoder.rs:474:29 [INFO] [stderr] | [INFO] [stderr] 474 | /// entry count exceeds [`MAX_PROBE_PACKET_SIDE_DATA_ENTRIES`], its [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `send_packet` links to private item `MAX_PROBE_PACKETS` [INFO] [stderr] --> src/decoder.rs:475:41 [INFO] [stderr] | [INFO] [stderr] 475 | /// bytes would push the probe past [`MAX_PROBE_PACKETS`] or [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `send_packet` links to private item `MAX_PROBE_PACKET_BYTES` [INFO] [stderr] --> src/decoder.rs:476:9 [INFO] [stderr] | [INFO] [stderr] 476 | /// [`MAX_PROBE_PACKET_BYTES`], or [`av_packet_ref`] fails ENOMEM — [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `HwDeviceInitFailed` links to private item `HwDeviceInitFailed` [INFO] [stderr] --> src/error.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | /// [`HwDeviceInitFailed`] for the payload details. `#[from]` gives [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `AllBackendsFailed` links to private item `AllBackendsFailed` [INFO] [stderr] --> src/error.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | /// [`AllBackendsFailed`] for the payload details (in particular the [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: public documentation for `FallbackFailed` links to private item `FallbackFailed` [INFO] [stderr] --> src/error.rs:54:44 [INFO] [stderr] | [INFO] [stderr] 54 | /// fallback attempt itself fails. See [`FallbackFailed`] for the [INFO] [stderr] | ^^^^^^^^^^^^^^ this item is private [INFO] [stderr] | [INFO] [stderr] = note: this link will resolve properly if you pass `--document-private-items` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `crate::pix_fmt` [INFO] [stderr] --> src/frame.rs:229:36 [INFO] [stderr] | [INFO] [stderr] 229 | /// output formats listed in [`crate::pix_fmt`]. [INFO] [stderr] | ^^^^^^^^^^^^^^ no item named `pix_fmt` in module `mediadecode_ffmpeg` [INFO] [stderr] [INFO] [stderr] warning: `mediadecode-ffmpeg` (lib doc) generated 15 warnings [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.92s [INFO] [stderr] Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/mediadecode_ffmpeg/index.html [INFO] running `Command { std: "docker" "stop" "-t" "1" "a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51", kill_on_drop: false }` [INFO] [stdout] a94a3aebd0038eb1415d7869020725b24b0aba8d90c89b71ee011d0a696dcb51