Skip to content
Snippets Groups Projects

Some Cava optimization

Merged rarbore2 requested to merge cava_opt into main
2 files
+ 23
7
Compare changes
  • Side-by-side
  • Inline
Files
2
fn medianMatrix<a : number, rows, cols : usize>(m : a[rows, cols]) -> a {
const n : usize = rows * cols;
let tmp : a[rows * cols];
@tmp let tmp : a[rows * cols];
for i = 0 to rows * cols {
tmp[i] = m[i / cols, i % cols];
}
@@ -102,13 +102,13 @@ fn demosaic<row : usize, col : usize>(input : f32[CHAN, row, col]) -> f32[CHAN,
}
fn denoise<row : usize, col : usize>(input : f32[CHAN, row, col]) -> f32[CHAN, row, col] {
let res : f32[CHAN, row, col];
@res let res : f32[CHAN, row, col];
for chan = 0 to CHAN {
for r = 0 to row {
for c = 0 to col {
if r >= 1 && r < row - 1 && c >= 1 && c < col - 1 {
let filter : f32[3][3]; // same as [3, 3]
@filter let filter : f32[3][3]; // same as [3, 3]
for i = 0 to 3 by 1 {
for j = 0 to 3 by 1 {
filter[i, j] = input[chan, r + i - 1, c + j - 1];
@@ -209,7 +209,7 @@ fn cava<r, c, num_ctrl_pts : usize>(
) -> u8[CHAN, r, c] {
@fuse1 let scaled = scale::<r, c>(input);
@fuse1 let demosc = demosaic::<r, c>(scaled);
let denosd = denoise::<r, c>(demosc);
@fuse2 let denosd = denoise::<r, c>(demosc);
let transf = transform::<r, c>(denosd, TsTw);
let gamutd = gamut::<r, c, num_ctrl_pts>(transf, ctrl_pts, weights, coefs);
let tonemd = tone_map::<r, c>(gamutd, tonemap);
Loading