mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-09 20:04:20 +00:00
We were already accepting AvFrame for swscale inputs, but for the output a different SwConverterTarget trait was being used. The old interface had a few issues: - The use of memory mapping traits, putting a dependency on crosvm/base - Insufficient metadata, not being able to represent custom padding on the stride or non-contiguous plane layouts - Inconsistency between input and output types In this patch, we: 1. Introduce a AvFrame-based API to replace the old SwConverter API. 2. Add a TryAsAvFrameExt extension trait inside devices/ to convert virtio handles to AvFrames. (This is placed inside devices to avoid ffmpeg depending on base.) 3. Add a new wrapper type, MemoryMappingAvBufferSource, that wraps a MemoryMappingArena and implements AvBufferSource for it. This was technically not sound, but it's a low-risk attack vector that we implicitly allowed before. The patch doesn't change the behavior; it just makes this assumption more explicit. BUG=b:239897269 TEST=cargo test --features "video-decoder,ffmpeg" -p devices -p ffmpeg Change-Id: Id15e19b7d2452d1bc722a65f941c2c9150876205 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3889245 Commit-Queue: Tatsuyuki Ishi <ishitatsuyuki@google.com> Reviewed-by: Alexandre Courbot <acourbot@chromium.org> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |