Conversation
76d0c6c to
46f6fb9
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #44 +/- ##
===========================================
+ Coverage 79.22% 97.20% +17.97%
===========================================
Files 4 3 -1
Lines 1011 286 -725
===========================================
- Hits 801 278 -523
+ Misses 210 8 -202 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
46f6fb9 to
d3509ff
Compare
62fe0f2 to
8e4a7cb
Compare
This rewrite has the following goals:
- Remove code that is unrelated to storing frame data, such as the
`math` module
- Rework the public interface to focus on visible pixels first, rather
than including padding first
- This includes hiding access to padding data behind a Cargo feature
- Ensure that data access is safe and performant
- This is enabled by making sure we limit the number of ways to
instantiate a frame, and that those ways are thoroughly validated.
Currently the only way to initialize a `Frame` or `Plane`s is
through the `FrameBuilder` interface.
- We want to avoid the current pattern where API users are accessing
the raw data and using `unsafe` blocks to manually iterate over the
visible pixels. Users should feel comfortable that v_frame's
accessors are performant.
8e4a7cb to
d56c060
Compare
lu-zero
left a comment
There was a problem hiding this comment.
Looks cool, maybe we could also experiment with const-generics now that they are very stable?
|
Before merging, I'm going through av-scenechange to make sure this suits the needs there. (if it works in av-scenechange then it should be compatible with rav1e as well) |
|
Finished getting av-scenechange updated to work with this. I had to copy a few utility structs like |
|
@lu-zero Followup thought I had on the bitdepth const generics: Although it's probably not worthwhile to apply it through the entire crate, I think it could be useful in certain hot functions, similar to how we might use it for block sizes in SAD/SATD.
|

This rewrite has the following goals:
mathmoduleFrameorPlanes is through theFrameBuilderinterface.unsafeblocks to manually iterate over the visible pixels. Users should feel comfortable that v_frame's accessors are performant.