aboutsummaryrefslogtreecommitdiff
path: root/lvc/src/decode.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-03-09 18:09:07 +0100
committermetamuffin <metamuffin@disroot.org>2023-03-09 18:09:07 +0100
commit4fbf4bb4310da4bede43c9428809ac9a8804982a (patch)
treedaa7b2b34bb0aad4c188550b413ccd725eb1c5c4 /lvc/src/decode.rs
parentecb81ba6448d6e33a9e7ecd3cd5d41513713f814 (diff)
downloadvideo-codec-experiments-4fbf4bb4310da4bede43c9428809ac9a8804982a.tar
video-codec-experiments-4fbf4bb4310da4bede43c9428809ac9a8804982a.tar.bz2
video-codec-experiments-4fbf4bb4310da4bede43c9428809ac9a8804982a.tar.zst
works very well
Diffstat (limited to 'lvc/src/decode.rs')
-rw-r--r--lvc/src/decode.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/lvc/src/decode.rs b/lvc/src/decode.rs
index da69080..771cba9 100644
--- a/lvc/src/decode.rs
+++ b/lvc/src/decode.rs
@@ -1,12 +1,17 @@
use crate::{split::split, Block, Frame, View, P2};
+use rayon::join;
pub fn decode(last_frame: &Frame, frame: &mut Frame, view: View, block: &Block) {
match block {
Block::Lit(pxs) => frame.import(view, &pxs),
Block::Split(a, b) => {
let [av, bv] = split(view);
- decode(last_frame, frame, av, &a);
- decode(last_frame, frame, bv, &b);
+ let (frame1, frame2) =
+ unsafe { (&mut *(frame as *mut Frame), &mut *(frame as *mut Frame)) };
+ join(
+ || decode(last_frame, frame1, av, &a),
+ || decode(last_frame, frame2, bv, &b),
+ );
}
Block::Ref(r) => {
for y in view.a.y..view.b.y {