chore: design cleanup, dead-code purge, README/doc refresh
Audit-driven follow-up after the SAFETY-debt commit (Oracle steps 6-7).
End state: cargo clippy --release --all-targets still 0 errors; private_interfaces
and type_complexity warnings cleared.
Design cleanups (Oracle step 6):
- cap_portal.rs: introduce PortalFormatInfo struct to replace the
Rc<Cell<Option<(u32,u32,u32,u64)>>> cross-callback hand-off. Self-
documenting struct fields replace positional tuple access at the
format-change and process callbacks.
- avhw.rs: import_dma_buf_to_vaapi signature collapses from 8 args
(fd/width/height/drm_format/modifier/stride/offset) to
(*mut AVBufferRef, &PwDmaBufFrame). Callers in avhw.rs,
state_portal.rs, and vaapi_import_bench.rs now pass the frame by
reference instead of unpacking 7 fields just to repack them. Drops
the unused width parameter and the too_many_arguments(8/7) warning.
- state.rs: visibility hygiene. EncConstructionStage and WlrHeadInfo
downgrade pub -> pub(crate); State.stage field downgrades to
pub(crate). These are internal state-machine types not exposed
across the crate boundary; making them pub(crate) clears all
private_interfaces warnings without leaking more types.
Dead-code purge (Oracle step 7):
- transform.rs: remove unused Rect struct, transform_basis,
screen_to_frame, fit_inside_bounds helpers and their 18 dedicated
tests. Transform enum and transpose_if_transform_transposed remain
(both are actively used by state.rs and avhw.rs). File shrinks
from 409 -> 109 lines.
Repository housekeeping (Oracle step 7):
- .gitignore: add review.json (stray review-tool output that
regenerates per run).
- README.md: refresh CLI table to match src/args.rs (now lists
--backend, --no-persist, --port-as-WebRTC-signaling, --max-bitrate,
--stats). Add capture-backend explainer + 4 new usage examples.
Note in README points readers at src/args.rs as the authoritative
source. Remove stale 'WebTransport, unused in MVP' description.
avhw.rs: AsRawFd import annotated with a rustc-quirk explanation — the
import triggers a false 'unused_imports' warning but E0599 if removed.
Left as-is with explanatory comment rather than chasing the lint.
All 79 remaining unit tests + 3 integration tests still pass. Cargo
build --release clean.
This commit is contained in:
@@ -417,17 +417,10 @@ fn import_frame(
|
||||
) -> Result<ff::frame::Video> {
|
||||
// SAFETY: frames_ctx is a live VAAPI frames context configured for the capture format; frame
|
||||
// carries a valid DMA-BUF fd and metadata from PipeWire for the duration of the call.
|
||||
// SAFETY: frames_ctx is a valid VAAPI frames context; `frame` carries the
|
||||
// DMA-BUF metadata read by the function.
|
||||
unsafe {
|
||||
import_dma_buf_to_vaapi(
|
||||
frames_ctx.as_ptr(),
|
||||
frame.fd.as_raw_fd(),
|
||||
frame.width,
|
||||
frame.height,
|
||||
frame.format,
|
||||
frame.modifier,
|
||||
frame.stride,
|
||||
frame.offset,
|
||||
)
|
||||
import_dma_buf_to_vaapi(frames_ctx.as_ptr(), frame)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -940,20 +933,11 @@ fn main() -> Result<()> {
|
||||
|
||||
// SAFETY: delegates to avhw::import_dma_buf_to_vaapi (itself an unsafe fn).
|
||||
// frames_ctx is a valid AVBufferRef from AvHwFrameCtx::for_capture above;
|
||||
// first_frame's fd/width/height/format/modifier/stride/offset are all sourced
|
||||
// from the PipeWire-formatted PwDmaBufFrame. See that function's own SAFETY
|
||||
// contract for the full rationale.
|
||||
// `first_frame` is the PipeWire-formatted PwDmaBufFrame whose metadata the
|
||||
// function reads directly. See that function's own SAFETY contract for the
|
||||
// full rationale.
|
||||
let vaapi_frame = unsafe {
|
||||
import_dma_buf_to_vaapi(
|
||||
frames_ctx.as_ptr(),
|
||||
first_frame.fd.as_raw_fd(),
|
||||
first_frame.width,
|
||||
first_frame.height,
|
||||
first_frame.format,
|
||||
first_frame.modifier,
|
||||
first_frame.stride,
|
||||
first_frame.offset,
|
||||
)
|
||||
import_dma_buf_to_vaapi(frames_ctx.as_ptr(), &first_frame)
|
||||
};
|
||||
|
||||
match &vaapi_frame {
|
||||
|
||||
Reference in New Issue
Block a user