mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-27 12:07:02 -06:00
- crates/media: probe (duration, rate/channels, size/fps; WMA/WMV recognised), audio decode to f32 PCM (MP3, AAC M4A/ADTS, ALAC, WAV, AIFF, CAF, FLAC, Vorbis via symphonia; Opus with our decoder in Ogg/WebM/MKV), video decode (MP4/MOV/WebM/MKV) with YUV->RGBA, poster frames, trim/fade/volume, Player mixer + per-voice clock (device-clocked or wall-clocked), VideoFeed. - Codec crates ported from FilmCraft: bitstream, h264, hevc, vp9, av1, isobmff, matroska, ogg, opus. - insert.audio/insert.video probe and store duration/size and a poster frame; unplayable media is embedded with a warning. New media.play/pause/toggle/stop/seek/info/posterFrame. - UI: MediaHost (cpal output injected by the desktop app), control bar under media, video frames on canvas and in the show; autoplay, click to play, loop, rewind, across slides, hide, full screen. - Tests with in-code WAV/AIFF and CC0 self-generated fixtures (make.sh, ATTRIBUTION.md rows). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
490 lines
26 KiB
Rust
490 lines
26 KiB
Rust
// Generated by tools/gen_transforms.py from the butterfly descriptions of the VP9 specification
|
|
// v0.6 section 8.7.1. Do not edit by hand.
|
|
|
|
macro_rules! transforms_1d {
|
|
($t:ty) => {
|
|
#[inline(always)]
|
|
fn r14(x: $t) -> $t {
|
|
x.wrapping_add(1 << 13) >> 14
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn idct4(x: [$t; 4]) -> [$t; 4] {
|
|
let v0 = r14(x[0].wrapping_mul(11585).wrapping_add(x[2].wrapping_mul(-11585)));
|
|
let v1 = r14(x[0].wrapping_mul(11585).wrapping_add(x[2].wrapping_mul(11585)));
|
|
let v2 = r14(x[1].wrapping_mul(6270).wrapping_add(x[3].wrapping_mul(-15137)));
|
|
let v3 = r14(x[1].wrapping_mul(15137).wrapping_add(x[3].wrapping_mul(6270)));
|
|
let v4 = v1.wrapping_add(v3);
|
|
let v5 = v1.wrapping_sub(v3);
|
|
let v6 = v0.wrapping_add(v2);
|
|
let v7 = v0.wrapping_sub(v2);
|
|
[v4, v6, v7, v5]
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn idct8(x: [$t; 8]) -> [$t; 8] {
|
|
let v0 = r14(x[0].wrapping_mul(11585).wrapping_add(x[4].wrapping_mul(-11585)));
|
|
let v1 = r14(x[0].wrapping_mul(11585).wrapping_add(x[4].wrapping_mul(11585)));
|
|
let v2 = r14(x[2].wrapping_mul(6270).wrapping_add(x[6].wrapping_mul(-15137)));
|
|
let v3 = r14(x[2].wrapping_mul(15137).wrapping_add(x[6].wrapping_mul(6270)));
|
|
let v4 = v1.wrapping_add(v3);
|
|
let v5 = v1.wrapping_sub(v3);
|
|
let v6 = v0.wrapping_add(v2);
|
|
let v7 = v0.wrapping_sub(v2);
|
|
let v8 = r14(x[1].wrapping_mul(3196).wrapping_add(x[7].wrapping_mul(-16069)));
|
|
let v9 = r14(x[1].wrapping_mul(16069).wrapping_add(x[7].wrapping_mul(3196)));
|
|
let v10 = r14(x[5].wrapping_mul(13623).wrapping_add(x[3].wrapping_mul(-9102)));
|
|
let v11 = r14(x[5].wrapping_mul(9102).wrapping_add(x[3].wrapping_mul(13623)));
|
|
let v12 = v8.wrapping_add(v10);
|
|
let v13 = v8.wrapping_sub(v10);
|
|
let v14 = v9.wrapping_add(v11);
|
|
let v15 = v9.wrapping_sub(v11);
|
|
let v16 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(-11585)));
|
|
let v17 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(11585)));
|
|
let v18 = v4.wrapping_add(v14);
|
|
let v19 = v4.wrapping_sub(v14);
|
|
let v20 = v6.wrapping_add(v17);
|
|
let v21 = v6.wrapping_sub(v17);
|
|
let v22 = v7.wrapping_add(v16);
|
|
let v23 = v7.wrapping_sub(v16);
|
|
let v24 = v5.wrapping_add(v12);
|
|
let v25 = v5.wrapping_sub(v12);
|
|
[v18, v20, v22, v24, v25, v23, v21, v19]
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn idct16(x: [$t; 16]) -> [$t; 16] {
|
|
let v0 = r14(x[0].wrapping_mul(11585).wrapping_add(x[8].wrapping_mul(-11585)));
|
|
let v1 = r14(x[0].wrapping_mul(11585).wrapping_add(x[8].wrapping_mul(11585)));
|
|
let v2 = r14(x[4].wrapping_mul(6270).wrapping_add(x[12].wrapping_mul(-15137)));
|
|
let v3 = r14(x[4].wrapping_mul(15137).wrapping_add(x[12].wrapping_mul(6270)));
|
|
let v4 = v1.wrapping_add(v3);
|
|
let v5 = v1.wrapping_sub(v3);
|
|
let v6 = v0.wrapping_add(v2);
|
|
let v7 = v0.wrapping_sub(v2);
|
|
let v8 = r14(x[2].wrapping_mul(3196).wrapping_add(x[14].wrapping_mul(-16069)));
|
|
let v9 = r14(x[2].wrapping_mul(16069).wrapping_add(x[14].wrapping_mul(3196)));
|
|
let v10 = r14(x[10].wrapping_mul(13623).wrapping_add(x[6].wrapping_mul(-9102)));
|
|
let v11 = r14(x[10].wrapping_mul(9102).wrapping_add(x[6].wrapping_mul(13623)));
|
|
let v12 = v8.wrapping_add(v10);
|
|
let v13 = v8.wrapping_sub(v10);
|
|
let v14 = v9.wrapping_add(v11);
|
|
let v15 = v9.wrapping_sub(v11);
|
|
let v16 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(-11585)));
|
|
let v17 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(11585)));
|
|
let v18 = v4.wrapping_add(v14);
|
|
let v19 = v4.wrapping_sub(v14);
|
|
let v20 = v6.wrapping_add(v17);
|
|
let v21 = v6.wrapping_sub(v17);
|
|
let v22 = v7.wrapping_add(v16);
|
|
let v23 = v7.wrapping_sub(v16);
|
|
let v24 = v5.wrapping_add(v12);
|
|
let v25 = v5.wrapping_sub(v12);
|
|
let v26 = r14(x[1].wrapping_mul(1606).wrapping_add(x[15].wrapping_mul(-16305)));
|
|
let v27 = r14(x[1].wrapping_mul(16305).wrapping_add(x[15].wrapping_mul(1606)));
|
|
let v28 = r14(x[9].wrapping_mul(12665).wrapping_add(x[7].wrapping_mul(-10394)));
|
|
let v29 = r14(x[9].wrapping_mul(10394).wrapping_add(x[7].wrapping_mul(12665)));
|
|
let v30 = r14(x[5].wrapping_mul(7723).wrapping_add(x[11].wrapping_mul(-14449)));
|
|
let v31 = r14(x[5].wrapping_mul(14449).wrapping_add(x[11].wrapping_mul(7723)));
|
|
let v32 = r14(x[13].wrapping_mul(15679).wrapping_add(x[3].wrapping_mul(-4756)));
|
|
let v33 = r14(x[13].wrapping_mul(4756).wrapping_add(x[3].wrapping_mul(15679)));
|
|
let v34 = v26.wrapping_add(v28);
|
|
let v35 = v26.wrapping_sub(v28);
|
|
let v36 = v32.wrapping_add(v30);
|
|
let v37 = v32.wrapping_sub(v30);
|
|
let v38 = v33.wrapping_add(v31);
|
|
let v39 = v33.wrapping_sub(v31);
|
|
let v40 = v27.wrapping_add(v29);
|
|
let v41 = v27.wrapping_sub(v29);
|
|
let v42 = r14(v41.wrapping_mul(6270).wrapping_add(v35.wrapping_mul(-15137)));
|
|
let v43 = r14(v41.wrapping_mul(15137).wrapping_add(v35.wrapping_mul(6270)));
|
|
let v44 = r14(v37.wrapping_mul(-15137).wrapping_add(v39.wrapping_mul(6270)));
|
|
let v45 = r14(v37.wrapping_mul(-6270).wrapping_add(v39.wrapping_mul(-15137)));
|
|
let v46 = v34.wrapping_add(v36);
|
|
let v47 = v34.wrapping_sub(v36);
|
|
let v48 = v40.wrapping_add(v38);
|
|
let v49 = v40.wrapping_sub(v38);
|
|
let v50 = v42.wrapping_add(v45);
|
|
let v51 = v42.wrapping_sub(v45);
|
|
let v52 = v43.wrapping_add(v44);
|
|
let v53 = v43.wrapping_sub(v44);
|
|
let v54 = r14(v53.wrapping_mul(11585).wrapping_add(v51.wrapping_mul(-11585)));
|
|
let v55 = r14(v53.wrapping_mul(11585).wrapping_add(v51.wrapping_mul(11585)));
|
|
let v56 = r14(v49.wrapping_mul(11585).wrapping_add(v47.wrapping_mul(-11585)));
|
|
let v57 = r14(v49.wrapping_mul(11585).wrapping_add(v47.wrapping_mul(11585)));
|
|
let v58 = v18.wrapping_add(v48);
|
|
let v59 = v18.wrapping_sub(v48);
|
|
let v60 = v20.wrapping_add(v52);
|
|
let v61 = v20.wrapping_sub(v52);
|
|
let v62 = v22.wrapping_add(v55);
|
|
let v63 = v22.wrapping_sub(v55);
|
|
let v64 = v24.wrapping_add(v57);
|
|
let v65 = v24.wrapping_sub(v57);
|
|
let v66 = v25.wrapping_add(v56);
|
|
let v67 = v25.wrapping_sub(v56);
|
|
let v68 = v23.wrapping_add(v54);
|
|
let v69 = v23.wrapping_sub(v54);
|
|
let v70 = v21.wrapping_add(v50);
|
|
let v71 = v21.wrapping_sub(v50);
|
|
let v72 = v19.wrapping_add(v46);
|
|
let v73 = v19.wrapping_sub(v46);
|
|
[v58, v60, v62, v64, v66, v68, v70, v72, v73, v71, v69, v67, v65, v63, v61, v59]
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn idct32(x: [$t; 32]) -> [$t; 32] {
|
|
let v0 = r14(x[0].wrapping_mul(11585).wrapping_add(x[16].wrapping_mul(-11585)));
|
|
let v1 = r14(x[0].wrapping_mul(11585).wrapping_add(x[16].wrapping_mul(11585)));
|
|
let v2 = r14(x[8].wrapping_mul(6270).wrapping_add(x[24].wrapping_mul(-15137)));
|
|
let v3 = r14(x[8].wrapping_mul(15137).wrapping_add(x[24].wrapping_mul(6270)));
|
|
let v4 = v1.wrapping_add(v3);
|
|
let v5 = v1.wrapping_sub(v3);
|
|
let v6 = v0.wrapping_add(v2);
|
|
let v7 = v0.wrapping_sub(v2);
|
|
let v8 = r14(x[4].wrapping_mul(3196).wrapping_add(x[28].wrapping_mul(-16069)));
|
|
let v9 = r14(x[4].wrapping_mul(16069).wrapping_add(x[28].wrapping_mul(3196)));
|
|
let v10 = r14(x[20].wrapping_mul(13623).wrapping_add(x[12].wrapping_mul(-9102)));
|
|
let v11 = r14(x[20].wrapping_mul(9102).wrapping_add(x[12].wrapping_mul(13623)));
|
|
let v12 = v8.wrapping_add(v10);
|
|
let v13 = v8.wrapping_sub(v10);
|
|
let v14 = v9.wrapping_add(v11);
|
|
let v15 = v9.wrapping_sub(v11);
|
|
let v16 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(-11585)));
|
|
let v17 = r14(v15.wrapping_mul(11585).wrapping_add(v13.wrapping_mul(11585)));
|
|
let v18 = v4.wrapping_add(v14);
|
|
let v19 = v4.wrapping_sub(v14);
|
|
let v20 = v6.wrapping_add(v17);
|
|
let v21 = v6.wrapping_sub(v17);
|
|
let v22 = v7.wrapping_add(v16);
|
|
let v23 = v7.wrapping_sub(v16);
|
|
let v24 = v5.wrapping_add(v12);
|
|
let v25 = v5.wrapping_sub(v12);
|
|
let v26 = r14(x[2].wrapping_mul(1606).wrapping_add(x[30].wrapping_mul(-16305)));
|
|
let v27 = r14(x[2].wrapping_mul(16305).wrapping_add(x[30].wrapping_mul(1606)));
|
|
let v28 = r14(x[18].wrapping_mul(12665).wrapping_add(x[14].wrapping_mul(-10394)));
|
|
let v29 = r14(x[18].wrapping_mul(10394).wrapping_add(x[14].wrapping_mul(12665)));
|
|
let v30 = r14(x[10].wrapping_mul(7723).wrapping_add(x[22].wrapping_mul(-14449)));
|
|
let v31 = r14(x[10].wrapping_mul(14449).wrapping_add(x[22].wrapping_mul(7723)));
|
|
let v32 = r14(x[26].wrapping_mul(15679).wrapping_add(x[6].wrapping_mul(-4756)));
|
|
let v33 = r14(x[26].wrapping_mul(4756).wrapping_add(x[6].wrapping_mul(15679)));
|
|
let v34 = v26.wrapping_add(v28);
|
|
let v35 = v26.wrapping_sub(v28);
|
|
let v36 = v32.wrapping_add(v30);
|
|
let v37 = v32.wrapping_sub(v30);
|
|
let v38 = v33.wrapping_add(v31);
|
|
let v39 = v33.wrapping_sub(v31);
|
|
let v40 = v27.wrapping_add(v29);
|
|
let v41 = v27.wrapping_sub(v29);
|
|
let v42 = r14(v41.wrapping_mul(6270).wrapping_add(v35.wrapping_mul(-15137)));
|
|
let v43 = r14(v41.wrapping_mul(15137).wrapping_add(v35.wrapping_mul(6270)));
|
|
let v44 = r14(v37.wrapping_mul(-15137).wrapping_add(v39.wrapping_mul(6270)));
|
|
let v45 = r14(v37.wrapping_mul(-6270).wrapping_add(v39.wrapping_mul(-15137)));
|
|
let v46 = v34.wrapping_add(v36);
|
|
let v47 = v34.wrapping_sub(v36);
|
|
let v48 = v40.wrapping_add(v38);
|
|
let v49 = v40.wrapping_sub(v38);
|
|
let v50 = v42.wrapping_add(v45);
|
|
let v51 = v42.wrapping_sub(v45);
|
|
let v52 = v43.wrapping_add(v44);
|
|
let v53 = v43.wrapping_sub(v44);
|
|
let v54 = r14(v53.wrapping_mul(11585).wrapping_add(v51.wrapping_mul(-11585)));
|
|
let v55 = r14(v53.wrapping_mul(11585).wrapping_add(v51.wrapping_mul(11585)));
|
|
let v56 = r14(v49.wrapping_mul(11585).wrapping_add(v47.wrapping_mul(-11585)));
|
|
let v57 = r14(v49.wrapping_mul(11585).wrapping_add(v47.wrapping_mul(11585)));
|
|
let v58 = v18.wrapping_add(v48);
|
|
let v59 = v18.wrapping_sub(v48);
|
|
let v60 = v20.wrapping_add(v52);
|
|
let v61 = v20.wrapping_sub(v52);
|
|
let v62 = v22.wrapping_add(v55);
|
|
let v63 = v22.wrapping_sub(v55);
|
|
let v64 = v24.wrapping_add(v57);
|
|
let v65 = v24.wrapping_sub(v57);
|
|
let v66 = v25.wrapping_add(v56);
|
|
let v67 = v25.wrapping_sub(v56);
|
|
let v68 = v23.wrapping_add(v54);
|
|
let v69 = v23.wrapping_sub(v54);
|
|
let v70 = v21.wrapping_add(v50);
|
|
let v71 = v21.wrapping_sub(v50);
|
|
let v72 = v19.wrapping_add(v46);
|
|
let v73 = v19.wrapping_sub(v46);
|
|
let v74 = r14(x[1].wrapping_mul(804).wrapping_add(x[31].wrapping_mul(-16364)));
|
|
let v75 = r14(x[1].wrapping_mul(16364).wrapping_add(x[31].wrapping_mul(804)));
|
|
let v76 = r14(x[17].wrapping_mul(12140).wrapping_add(x[15].wrapping_mul(-11003)));
|
|
let v77 = r14(x[17].wrapping_mul(11003).wrapping_add(x[15].wrapping_mul(12140)));
|
|
let v78 = r14(x[9].wrapping_mul(7005).wrapping_add(x[23].wrapping_mul(-14811)));
|
|
let v79 = r14(x[9].wrapping_mul(14811).wrapping_add(x[23].wrapping_mul(7005)));
|
|
let v80 = r14(x[25].wrapping_mul(15426).wrapping_add(x[7].wrapping_mul(-5520)));
|
|
let v81 = r14(x[25].wrapping_mul(5520).wrapping_add(x[7].wrapping_mul(15426)));
|
|
let v82 = r14(x[5].wrapping_mul(3981).wrapping_add(x[27].wrapping_mul(-15893)));
|
|
let v83 = r14(x[5].wrapping_mul(15893).wrapping_add(x[27].wrapping_mul(3981)));
|
|
let v84 = r14(x[21].wrapping_mul(14053).wrapping_add(x[11].wrapping_mul(-8423)));
|
|
let v85 = r14(x[21].wrapping_mul(8423).wrapping_add(x[11].wrapping_mul(14053)));
|
|
let v86 = r14(x[13].wrapping_mul(9760).wrapping_add(x[19].wrapping_mul(-13160)));
|
|
let v87 = r14(x[13].wrapping_mul(13160).wrapping_add(x[19].wrapping_mul(9760)));
|
|
let v88 = r14(x[29].wrapping_mul(16207).wrapping_add(x[3].wrapping_mul(-2404)));
|
|
let v89 = r14(x[29].wrapping_mul(2404).wrapping_add(x[3].wrapping_mul(16207)));
|
|
let v90 = v74.wrapping_add(v76);
|
|
let v91 = v74.wrapping_sub(v76);
|
|
let v92 = v80.wrapping_add(v78);
|
|
let v93 = v80.wrapping_sub(v78);
|
|
let v94 = v82.wrapping_add(v84);
|
|
let v95 = v82.wrapping_sub(v84);
|
|
let v96 = v88.wrapping_add(v86);
|
|
let v97 = v88.wrapping_sub(v86);
|
|
let v98 = v89.wrapping_add(v87);
|
|
let v99 = v89.wrapping_sub(v87);
|
|
let v100 = v83.wrapping_add(v85);
|
|
let v101 = v83.wrapping_sub(v85);
|
|
let v102 = v81.wrapping_add(v79);
|
|
let v103 = v81.wrapping_sub(v79);
|
|
let v104 = v75.wrapping_add(v77);
|
|
let v105 = v75.wrapping_sub(v77);
|
|
let v106 = r14(v105.wrapping_mul(3196).wrapping_add(v91.wrapping_mul(-16069)));
|
|
let v107 = r14(v105.wrapping_mul(16069).wrapping_add(v91.wrapping_mul(3196)));
|
|
let v108 = r14(v97.wrapping_mul(-9102).wrapping_add(v99.wrapping_mul(13623)));
|
|
let v109 = r14(v97.wrapping_mul(-13623).wrapping_add(v99.wrapping_mul(-9102)));
|
|
let v110 = r14(v101.wrapping_mul(13623).wrapping_add(v95.wrapping_mul(-9102)));
|
|
let v111 = r14(v101.wrapping_mul(9102).wrapping_add(v95.wrapping_mul(13623)));
|
|
let v112 = r14(v93.wrapping_mul(-16069).wrapping_add(v103.wrapping_mul(3196)));
|
|
let v113 = r14(v93.wrapping_mul(-3196).wrapping_add(v103.wrapping_mul(-16069)));
|
|
let v114 = v90.wrapping_add(v92);
|
|
let v115 = v90.wrapping_sub(v92);
|
|
let v116 = v96.wrapping_add(v94);
|
|
let v117 = v96.wrapping_sub(v94);
|
|
let v118 = v98.wrapping_add(v100);
|
|
let v119 = v98.wrapping_sub(v100);
|
|
let v120 = v104.wrapping_add(v102);
|
|
let v121 = v104.wrapping_sub(v102);
|
|
let v122 = v106.wrapping_add(v113);
|
|
let v123 = v106.wrapping_sub(v113);
|
|
let v124 = v109.wrapping_add(v110);
|
|
let v125 = v109.wrapping_sub(v110);
|
|
let v126 = v108.wrapping_add(v111);
|
|
let v127 = v108.wrapping_sub(v111);
|
|
let v128 = v107.wrapping_add(v112);
|
|
let v129 = v107.wrapping_sub(v112);
|
|
let v130 = r14(v129.wrapping_mul(6270).wrapping_add(v123.wrapping_mul(-15137)));
|
|
let v131 = r14(v129.wrapping_mul(15137).wrapping_add(v123.wrapping_mul(6270)));
|
|
let v132 = r14(v125.wrapping_mul(-15137).wrapping_add(v127.wrapping_mul(6270)));
|
|
let v133 = r14(v125.wrapping_mul(-6270).wrapping_add(v127.wrapping_mul(-15137)));
|
|
let v134 = r14(v121.wrapping_mul(6270).wrapping_add(v115.wrapping_mul(-15137)));
|
|
let v135 = r14(v121.wrapping_mul(15137).wrapping_add(v115.wrapping_mul(6270)));
|
|
let v136 = r14(v117.wrapping_mul(-15137).wrapping_add(v119.wrapping_mul(6270)));
|
|
let v137 = r14(v117.wrapping_mul(-6270).wrapping_add(v119.wrapping_mul(-15137)));
|
|
let v138 = v114.wrapping_add(v116);
|
|
let v139 = v114.wrapping_sub(v116);
|
|
let v140 = v120.wrapping_add(v118);
|
|
let v141 = v120.wrapping_sub(v118);
|
|
let v142 = v122.wrapping_add(v124);
|
|
let v143 = v122.wrapping_sub(v124);
|
|
let v144 = v128.wrapping_add(v126);
|
|
let v145 = v128.wrapping_sub(v126);
|
|
let v146 = v130.wrapping_add(v133);
|
|
let v147 = v130.wrapping_sub(v133);
|
|
let v148 = v131.wrapping_add(v132);
|
|
let v149 = v131.wrapping_sub(v132);
|
|
let v150 = v134.wrapping_add(v137);
|
|
let v151 = v134.wrapping_sub(v137);
|
|
let v152 = v135.wrapping_add(v136);
|
|
let v153 = v135.wrapping_sub(v136);
|
|
let v154 = r14(v153.wrapping_mul(11585).wrapping_add(v151.wrapping_mul(-11585)));
|
|
let v155 = r14(v153.wrapping_mul(11585).wrapping_add(v151.wrapping_mul(11585)));
|
|
let v156 = r14(v149.wrapping_mul(11585).wrapping_add(v147.wrapping_mul(-11585)));
|
|
let v157 = r14(v149.wrapping_mul(11585).wrapping_add(v147.wrapping_mul(11585)));
|
|
let v158 = r14(v145.wrapping_mul(11585).wrapping_add(v143.wrapping_mul(-11585)));
|
|
let v159 = r14(v145.wrapping_mul(11585).wrapping_add(v143.wrapping_mul(11585)));
|
|
let v160 = r14(v141.wrapping_mul(11585).wrapping_add(v139.wrapping_mul(-11585)));
|
|
let v161 = r14(v141.wrapping_mul(11585).wrapping_add(v139.wrapping_mul(11585)));
|
|
let v162 = v58.wrapping_add(v140);
|
|
let v163 = v58.wrapping_sub(v140);
|
|
let v164 = v60.wrapping_add(v144);
|
|
let v165 = v60.wrapping_sub(v144);
|
|
let v166 = v62.wrapping_add(v148);
|
|
let v167 = v62.wrapping_sub(v148);
|
|
let v168 = v64.wrapping_add(v152);
|
|
let v169 = v64.wrapping_sub(v152);
|
|
let v170 = v66.wrapping_add(v155);
|
|
let v171 = v66.wrapping_sub(v155);
|
|
let v172 = v68.wrapping_add(v157);
|
|
let v173 = v68.wrapping_sub(v157);
|
|
let v174 = v70.wrapping_add(v159);
|
|
let v175 = v70.wrapping_sub(v159);
|
|
let v176 = v72.wrapping_add(v161);
|
|
let v177 = v72.wrapping_sub(v161);
|
|
let v178 = v73.wrapping_add(v160);
|
|
let v179 = v73.wrapping_sub(v160);
|
|
let v180 = v71.wrapping_add(v158);
|
|
let v181 = v71.wrapping_sub(v158);
|
|
let v182 = v69.wrapping_add(v156);
|
|
let v183 = v69.wrapping_sub(v156);
|
|
let v184 = v67.wrapping_add(v154);
|
|
let v185 = v67.wrapping_sub(v154);
|
|
let v186 = v65.wrapping_add(v150);
|
|
let v187 = v65.wrapping_sub(v150);
|
|
let v188 = v63.wrapping_add(v146);
|
|
let v189 = v63.wrapping_sub(v146);
|
|
let v190 = v61.wrapping_add(v142);
|
|
let v191 = v61.wrapping_sub(v142);
|
|
let v192 = v59.wrapping_add(v138);
|
|
let v193 = v59.wrapping_sub(v138);
|
|
[v162, v164, v166, v168, v170, v172, v174, v176, v178, v180, v182, v184, v186, v188, v190, v192, v193, v191, v189, v187, v185, v183, v181, v179, v177, v175, v173, v171, v169, v167, v165, v163]
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn iadst8(x: [$t; 8]) -> [$t; 8] {
|
|
let v0 = x[7].wrapping_mul(1606).wrapping_add(x[0].wrapping_mul(-16305));
|
|
let v1 = x[7].wrapping_mul(16305).wrapping_add(x[0].wrapping_mul(1606));
|
|
let v2 = x[5].wrapping_mul(7723).wrapping_add(x[2].wrapping_mul(-14449));
|
|
let v3 = x[5].wrapping_mul(14449).wrapping_add(x[2].wrapping_mul(7723));
|
|
let v4 = x[3].wrapping_mul(12665).wrapping_add(x[4].wrapping_mul(-10394));
|
|
let v5 = x[3].wrapping_mul(10394).wrapping_add(x[4].wrapping_mul(12665));
|
|
let v6 = x[1].wrapping_mul(15679).wrapping_add(x[6].wrapping_mul(-4756));
|
|
let v7 = x[1].wrapping_mul(4756).wrapping_add(x[6].wrapping_mul(15679));
|
|
let v8 = r14(v1.wrapping_add(v5));
|
|
let v9 = r14(v1.wrapping_sub(v5));
|
|
let v10 = r14(v0.wrapping_add(v4));
|
|
let v11 = r14(v0.wrapping_sub(v4));
|
|
let v12 = r14(v3.wrapping_add(v7));
|
|
let v13 = r14(v3.wrapping_sub(v7));
|
|
let v14 = r14(v2.wrapping_add(v6));
|
|
let v15 = r14(v2.wrapping_sub(v6));
|
|
let v16 = v9.wrapping_mul(6270).wrapping_add(v11.wrapping_mul(-15137));
|
|
let v17 = v9.wrapping_mul(15137).wrapping_add(v11.wrapping_mul(6270));
|
|
let v18 = v15.wrapping_mul(15137).wrapping_add(v13.wrapping_mul(-6270));
|
|
let v19 = v15.wrapping_mul(6270).wrapping_add(v13.wrapping_mul(15137));
|
|
let v20 = r14(v17.wrapping_add(v18));
|
|
let v21 = r14(v17.wrapping_sub(v18));
|
|
let v22 = r14(v16.wrapping_add(v19));
|
|
let v23 = r14(v16.wrapping_sub(v19));
|
|
let v24 = v8.wrapping_add(v12);
|
|
let v25 = v8.wrapping_sub(v12);
|
|
let v26 = v10.wrapping_add(v14);
|
|
let v27 = v10.wrapping_sub(v14);
|
|
let v28 = r14(v25.wrapping_mul(11585).wrapping_add(v27.wrapping_mul(-11585)));
|
|
let v29 = r14(v25.wrapping_mul(11585).wrapping_add(v27.wrapping_mul(11585)));
|
|
let v30 = r14(v21.wrapping_mul(11585).wrapping_add(v23.wrapping_mul(-11585)));
|
|
let v31 = r14(v21.wrapping_mul(11585).wrapping_add(v23.wrapping_mul(11585)));
|
|
let v32 = v20.wrapping_neg();
|
|
let v33 = v29.wrapping_neg();
|
|
let v34 = v30.wrapping_neg();
|
|
let v35 = v26.wrapping_neg();
|
|
[v24, v32, v31, v33, v28, v34, v22, v35]
|
|
}
|
|
|
|
#[inline(always)]
|
|
pub fn iadst16(x: [$t; 16]) -> [$t; 16] {
|
|
let v0 = x[15].wrapping_mul(804).wrapping_add(x[0].wrapping_mul(-16364));
|
|
let v1 = x[15].wrapping_mul(16364).wrapping_add(x[0].wrapping_mul(804));
|
|
let v2 = x[13].wrapping_mul(3981).wrapping_add(x[2].wrapping_mul(-15893));
|
|
let v3 = x[13].wrapping_mul(15893).wrapping_add(x[2].wrapping_mul(3981));
|
|
let v4 = x[11].wrapping_mul(7005).wrapping_add(x[4].wrapping_mul(-14811));
|
|
let v5 = x[11].wrapping_mul(14811).wrapping_add(x[4].wrapping_mul(7005));
|
|
let v6 = x[9].wrapping_mul(9760).wrapping_add(x[6].wrapping_mul(-13160));
|
|
let v7 = x[9].wrapping_mul(13160).wrapping_add(x[6].wrapping_mul(9760));
|
|
let v8 = x[7].wrapping_mul(12140).wrapping_add(x[8].wrapping_mul(-11003));
|
|
let v9 = x[7].wrapping_mul(11003).wrapping_add(x[8].wrapping_mul(12140));
|
|
let v10 = x[5].wrapping_mul(14053).wrapping_add(x[10].wrapping_mul(-8423));
|
|
let v11 = x[5].wrapping_mul(8423).wrapping_add(x[10].wrapping_mul(14053));
|
|
let v12 = x[3].wrapping_mul(15426).wrapping_add(x[12].wrapping_mul(-5520));
|
|
let v13 = x[3].wrapping_mul(5520).wrapping_add(x[12].wrapping_mul(15426));
|
|
let v14 = x[1].wrapping_mul(16207).wrapping_add(x[14].wrapping_mul(-2404));
|
|
let v15 = x[1].wrapping_mul(2404).wrapping_add(x[14].wrapping_mul(16207));
|
|
let v16 = r14(v1.wrapping_add(v9));
|
|
let v17 = r14(v1.wrapping_sub(v9));
|
|
let v18 = r14(v0.wrapping_add(v8));
|
|
let v19 = r14(v0.wrapping_sub(v8));
|
|
let v20 = r14(v3.wrapping_add(v11));
|
|
let v21 = r14(v3.wrapping_sub(v11));
|
|
let v22 = r14(v2.wrapping_add(v10));
|
|
let v23 = r14(v2.wrapping_sub(v10));
|
|
let v24 = r14(v5.wrapping_add(v13));
|
|
let v25 = r14(v5.wrapping_sub(v13));
|
|
let v26 = r14(v4.wrapping_add(v12));
|
|
let v27 = r14(v4.wrapping_sub(v12));
|
|
let v28 = r14(v7.wrapping_add(v15));
|
|
let v29 = r14(v7.wrapping_sub(v15));
|
|
let v30 = r14(v6.wrapping_add(v14));
|
|
let v31 = r14(v6.wrapping_sub(v14));
|
|
let v32 = v17.wrapping_mul(3196).wrapping_add(v19.wrapping_mul(-16069));
|
|
let v33 = v17.wrapping_mul(16069).wrapping_add(v19.wrapping_mul(3196));
|
|
let v34 = v21.wrapping_mul(13623).wrapping_add(v23.wrapping_mul(-9102));
|
|
let v35 = v21.wrapping_mul(9102).wrapping_add(v23.wrapping_mul(13623));
|
|
let v36 = v25.wrapping_mul(16069).wrapping_add(v27.wrapping_mul(3196));
|
|
let v37 = v25.wrapping_mul(-3196).wrapping_add(v27.wrapping_mul(16069));
|
|
let v38 = v29.wrapping_mul(9102).wrapping_add(v31.wrapping_mul(13623));
|
|
let v39 = v29.wrapping_mul(-13623).wrapping_add(v31.wrapping_mul(9102));
|
|
let v40 = r14(v33.wrapping_add(v37));
|
|
let v41 = r14(v33.wrapping_sub(v37));
|
|
let v42 = r14(v32.wrapping_add(v36));
|
|
let v43 = r14(v32.wrapping_sub(v36));
|
|
let v44 = r14(v35.wrapping_add(v39));
|
|
let v45 = r14(v35.wrapping_sub(v39));
|
|
let v46 = r14(v34.wrapping_add(v38));
|
|
let v47 = r14(v34.wrapping_sub(v38));
|
|
let v48 = v16.wrapping_add(v24);
|
|
let v49 = v16.wrapping_sub(v24);
|
|
let v50 = v18.wrapping_add(v26);
|
|
let v51 = v18.wrapping_sub(v26);
|
|
let v52 = v20.wrapping_add(v28);
|
|
let v53 = v20.wrapping_sub(v28);
|
|
let v54 = v22.wrapping_add(v30);
|
|
let v55 = v22.wrapping_sub(v30);
|
|
let v56 = v49.wrapping_mul(6270).wrapping_add(v51.wrapping_mul(-15137));
|
|
let v57 = v49.wrapping_mul(15137).wrapping_add(v51.wrapping_mul(6270));
|
|
let v58 = v55.wrapping_mul(15137).wrapping_add(v53.wrapping_mul(-6270));
|
|
let v59 = v55.wrapping_mul(6270).wrapping_add(v53.wrapping_mul(15137));
|
|
let v60 = v41.wrapping_mul(6270).wrapping_add(v43.wrapping_mul(-15137));
|
|
let v61 = v41.wrapping_mul(15137).wrapping_add(v43.wrapping_mul(6270));
|
|
let v62 = v47.wrapping_mul(15137).wrapping_add(v45.wrapping_mul(-6270));
|
|
let v63 = v47.wrapping_mul(6270).wrapping_add(v45.wrapping_mul(15137));
|
|
let v64 = r14(v57.wrapping_add(v58));
|
|
let v65 = r14(v57.wrapping_sub(v58));
|
|
let v66 = r14(v61.wrapping_add(v62));
|
|
let v67 = r14(v61.wrapping_sub(v62));
|
|
let v68 = r14(v56.wrapping_add(v59));
|
|
let v69 = r14(v56.wrapping_sub(v59));
|
|
let v70 = r14(v60.wrapping_add(v63));
|
|
let v71 = r14(v60.wrapping_sub(v63));
|
|
let v72 = v48.wrapping_add(v52);
|
|
let v73 = v48.wrapping_sub(v52);
|
|
let v74 = v40.wrapping_add(v44);
|
|
let v75 = v40.wrapping_sub(v44);
|
|
let v76 = v50.wrapping_add(v54);
|
|
let v77 = v50.wrapping_sub(v54);
|
|
let v78 = v42.wrapping_add(v46);
|
|
let v79 = v42.wrapping_sub(v46);
|
|
let v80 = r14(v73.wrapping_mul(-11585).wrapping_add(v77.wrapping_mul(-11585)));
|
|
let v81 = r14(v73.wrapping_mul(11585).wrapping_add(v77.wrapping_mul(-11585)));
|
|
let v82 = r14(v65.wrapping_mul(11585).wrapping_add(v69.wrapping_mul(11585)));
|
|
let v83 = r14(v65.wrapping_mul(-11585).wrapping_add(v69.wrapping_mul(11585)));
|
|
let v84 = r14(v75.wrapping_mul(11585).wrapping_add(v79.wrapping_mul(11585)));
|
|
let v85 = r14(v75.wrapping_mul(-11585).wrapping_add(v79.wrapping_mul(11585)));
|
|
let v86 = r14(v67.wrapping_mul(-11585).wrapping_add(v71.wrapping_mul(-11585)));
|
|
let v87 = r14(v67.wrapping_mul(11585).wrapping_add(v71.wrapping_mul(-11585)));
|
|
let v88 = v74.wrapping_neg();
|
|
let v89 = v70.wrapping_neg();
|
|
let v90 = v64.wrapping_neg();
|
|
let v91 = v76.wrapping_neg();
|
|
[v72, v88, v66, v90, v82, v86, v84, v80, v81, v85, v87, v83, v68, v89, v78, v91]
|
|
}
|
|
|
|
};
|
|
}
|
|
|
|
pub(crate) mod narrow {
|
|
transforms_1d!(i32);
|
|
}
|
|
|
|
pub(crate) mod wide {
|
|
transforms_1d!(i64);
|
|
}
|
|
|
|
/// The same butterflies on 4 / 8 columns at once (column pass of the 2D transforms).
|
|
pub(crate) mod cols4 {
|
|
transforms_1d!(crate::transform::Cols<4>);
|
|
}
|
|
|
|
pub(crate) mod cols8 {
|
|
transforms_1d!(crate::transform::Cols<8>);
|
|
}
|