misc patches done to get everything to play ball

also adds editorconfig
This commit is contained in:
modeco80
2024-04-24 03:41:32 -04:00
parent db97a62046
commit bcbf7db8d9
4 changed files with 35 additions and 17 deletions

11
.editorconfig Normal file
View File

@@ -0,0 +1,11 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = tab
indent_size = 4
# specifically for YAML
[{yml, yaml}]
indent_style = space

View File

@@ -1,16 +1,19 @@
import jpegTurbo from '@computernewb/jpeg-turbo';
import jpegTurbo from "@computernewb/jpeg-turbo"; import Piscina from 'piscina';
import Piscina from "piscina";
export default async (opts: any) => { export default async (opts: any) => {
let res = await jpegTurbo.compress(opts.buffer, { try {
format: jpegTurbo.FORMAT_RGBA, let res = await jpegTurbo.compress(opts.buffer, {
width: opts.width, format: jpegTurbo.FORMAT_RGBA,
height: opts.height, width: opts.width,
subsampling: jpegTurbo.SAMP_422, height: opts.height,
stride: opts.stride, subsampling: jpegTurbo.SAMP_422,
quality: opts.quality stride: opts.stride,
}); quality: opts.quality
});
return Piscina.move(res); return Piscina.move(res);
} } catch {
return;
}
};

View File

@@ -44,7 +44,8 @@ function GetRawSharpOptions(size: Size): sharp.CreateRaw {
} }
} }
const kJpegPool = new Piscina({ // Thread pool for doing JPEG encoding for rects.
const TheJpegEncoderPool = new Piscina({
filename: path.join(import.meta.dirname + '/JPEGEncoderWorker.js'), filename: path.join(import.meta.dirname + '/JPEGEncoderWorker.js'),
minThreads: 4, minThreads: 4,
maxThreads: 4 maxThreads: 4
@@ -53,7 +54,7 @@ const kJpegPool = new Piscina({
async function EncodeJpeg(canvas: Buffer, displaySize: Size, rect: Rect): Promise<Buffer> { async function EncodeJpeg(canvas: Buffer, displaySize: Size, rect: Rect): Promise<Buffer> {
let offset = (rect.y * displaySize.width + rect.x) * 4; let offset = (rect.y * displaySize.width + rect.x) * 4;
let res = await kJpegPool.run({ let res = await TheJpegEncoderPool.run({
buffer: canvas.subarray(offset), buffer: canvas.subarray(offset),
width: rect.width, width: rect.width,
height: rect.height, height: rect.height,
@@ -61,6 +62,10 @@ async function EncodeJpeg(canvas: Buffer, displaySize: Size, rect: Rect): Promis
quality: kJpegQuality quality: kJpegQuality
}); });
// TODO: There's probably (definitely) a better way to fix this
if(res == undefined)
return Buffer.from([]);
// have to manually turn it back into a buffer because // have to manually turn it back into a buffer because
// Piscina for some reason turns it into a Uint8Array // Piscina for some reason turns it into a Uint8Array

View File

@@ -66,7 +66,6 @@ __metadata:
"@types/ws": "npm:^8.5.5" "@types/ws": "npm:^8.5.5"
execa: "npm:^8.0.1" execa: "npm:^8.0.1"
mnemonist: "npm:^0.39.5" mnemonist: "npm:^0.39.5"
parcel: "npm:^2.12.0"
piscina: "npm:^4.4.0" piscina: "npm:^4.4.0"
prettier: "npm:^3.2.5" prettier: "npm:^3.2.5"
sharp: "npm:^0.33.3" sharp: "npm:^0.33.3"