diff options
author | metamuffin <metamuffin@disroot.org> | 2023-03-09 18:09:07 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-03-09 18:09:07 +0100 |
commit | 4fbf4bb4310da4bede43c9428809ac9a8804982a (patch) | |
tree | daa7b2b34bb0aad4c188550b413ccd725eb1c5c4 /lvc/src/decode.rs | |
parent | ecb81ba6448d6e33a9e7ecd3cd5d41513713f814 (diff) | |
download | video-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.rs | 9 |
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 { |