cvm-rs: allow setting JPEG quality from JS

This commit is contained in:
modeco80
2025-06-05 16:45:46 -04:00
parent 23c57dbb3b
commit 857eb46d2a
3 changed files with 10 additions and 4 deletions

2
cvm-rs/index.d.ts vendored
View File

@@ -9,6 +9,7 @@ interface JpegInputArgs {
height: number;
stride: number; // The width of your input framebuffer OR your image width (if encoding a full image)
buffer: Buffer;
quality: number;
// TODO: Allow different formats, or export a boxed ffi object which can store a format
// (i.e: new JpegEncoder(FORMAT_xxx)).
@@ -20,6 +21,7 @@ interface JpegResizeInputArgs {
desiredWidth: number; // dest width
desiredHeight: number; // dest height
buffer: Buffer; // source raw pixel buffer
quality: number;
}
/// Performs JPEG encoding.

View File

@@ -47,6 +47,7 @@ pub struct JpegInputArgs {
pub height: u32,
pub stride: u32,
pub buffer: napi::JsBuffer,
pub quality: u32,
}
#[napi(js_name = "jpegEncode")]
@@ -69,7 +70,7 @@ pub fn jpeg_encode(env: Env, input: JpegInputArgs) -> napi::Result<napi::JsObjec
let vec = COMPRESSOR.with(|lazy| {
let mut b = lazy.borrow_mut();
b.set_quality(35);
b.set_quality(input.quality);
b.set_subsamp(turbojpeg_sys::TJSAMP_TJSAMP_420);
b.compress_buffer(&image)
});
@@ -94,6 +95,7 @@ pub struct JpegResizeInputArgs {
pub desired_width: u32,
pub desired_height: u32,
pub buffer: napi::JsBuffer,
pub quality: u32,
}
#[napi(js_name = "jpegResizeEncode")]
@@ -136,7 +138,7 @@ pub fn jpeg_resize_and_encode(
let vec = COMPRESSOR.with(|lazy| {
let mut b = lazy.borrow_mut();
b.set_quality(35);
b.set_quality(input.quality);
b.set_subsamp(turbojpeg_sys::TJSAMP_TJSAMP_420);
b.compress_buffer(&image)
});