@revizly/sharp 0.33.2-revizly9 → 0.33.3-revizly4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/colour.js +1 -1
- package/lib/constructor.js +8 -4
- package/lib/index.d.ts +6 -2
- package/lib/input.js +2 -2
- package/lib/output.js +13 -0
- package/package.json +12 -14
- package/src/common.h +2 -2
- package/src/pipeline.cc +15 -13
- package/src/pipeline.h +4 -2
package/lib/colour.js
CHANGED
@@ -90,7 +90,7 @@ function pipelineColourspace (colourspace) {
|
|
90
90
|
if (!is.string(colourspace)) {
|
91
91
|
throw is.invalidParameterError('colourspace', 'string', colourspace);
|
92
92
|
}
|
93
|
-
this.options.
|
93
|
+
this.options.colourspacePipeline = colourspace;
|
94
94
|
return this;
|
95
95
|
}
|
96
96
|
|
package/lib/constructor.js
CHANGED
@@ -166,7 +166,7 @@ const debuglog = util.debuglog('sharp');
|
|
166
166
|
* @param {number} [options.text.dpi=72] - the resolution (size) at which to render the text. Does not take effect if `height` is specified.
|
167
167
|
* @param {boolean} [options.text.rgba=false] - set this to true to enable RGBA output. This is useful for colour emoji rendering, or support for pango markup features like `<span foreground="red">Red!</span>`.
|
168
168
|
* @param {number} [options.text.spacing=0] - text line height in points. Will use the font line height if none is specified.
|
169
|
-
* @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', '
|
169
|
+
* @param {string} [options.text.wrap='word'] - word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none'.
|
170
170
|
* @returns {Sharp}
|
171
171
|
* @throws {Error} Invalid parameters
|
172
172
|
*/
|
@@ -257,7 +257,7 @@ const Sharp = function (input, options) {
|
|
257
257
|
removeAlpha: false,
|
258
258
|
ensureAlpha: -1,
|
259
259
|
colourspace: 'srgb',
|
260
|
-
|
260
|
+
colourspacePipeline: 'last',
|
261
261
|
composite: [],
|
262
262
|
// output
|
263
263
|
fileOut: '',
|
@@ -325,6 +325,7 @@ const Sharp = function (input, options) {
|
|
325
325
|
heifCompression: 'av1',
|
326
326
|
heifEffort: 4,
|
327
327
|
heifChromaSubsampling: '4:4:4',
|
328
|
+
heifBitdepth: 8,
|
328
329
|
jxlDistance: 1,
|
329
330
|
jxlDecodingTier: 0,
|
330
331
|
jxlEffort: 7,
|
@@ -425,13 +426,16 @@ Object.setPrototypeOf(Sharp, stream.Duplex);
|
|
425
426
|
function clone () {
|
426
427
|
// Clone existing options
|
427
428
|
const clone = this.constructor.call();
|
428
|
-
|
429
|
+
const { debuglog, queueListener, ...options } = this.options;
|
430
|
+
clone.options = structuredClone(options);
|
431
|
+
clone.options.debuglog = debuglog;
|
432
|
+
clone.options.queueListener = queueListener;
|
429
433
|
// Pass 'finish' event to clone for Stream-based input
|
430
434
|
if (this._isStreamInput()) {
|
431
435
|
this.on('finish', () => {
|
432
436
|
// Clone inherits input data
|
433
437
|
this._flattenBufferIn();
|
434
|
-
clone.options.
|
438
|
+
clone.options.input.buffer = this.options.input.buffer;
|
435
439
|
clone.emit('finish');
|
436
440
|
});
|
437
441
|
}
|
package/lib/index.d.ts
CHANGED
@@ -1017,7 +1017,7 @@ declare namespace sharp {
|
|
1017
1017
|
rgba?: boolean;
|
1018
1018
|
/** Text line height in points. Will use the font line height if none is specified. (optional, default `0`) */
|
1019
1019
|
spacing?: number;
|
1020
|
-
/** Word wrapping style when width is provided, one of: 'word', 'char', '
|
1020
|
+
/** Word wrapping style when width is provided, one of: 'word', 'char', 'word-char' (prefer word, fallback to char) or 'none' */
|
1021
1021
|
wrap?: TextWrap;
|
1022
1022
|
}
|
1023
1023
|
|
@@ -1244,6 +1244,8 @@ declare namespace sharp {
|
|
1244
1244
|
effort?: number | undefined;
|
1245
1245
|
/** set to '4:2:0' to use chroma subsampling, requires libvips v8.11.0 (optional, default '4:4:4') */
|
1246
1246
|
chromaSubsampling?: string | undefined;
|
1247
|
+
/** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */
|
1248
|
+
bitdepth?: 8 | 10 | 12 | undefined;
|
1247
1249
|
}
|
1248
1250
|
|
1249
1251
|
interface HeifOptions extends OutputOptions {
|
@@ -1257,6 +1259,8 @@ declare namespace sharp {
|
|
1257
1259
|
effort?: number | undefined;
|
1258
1260
|
/** set to '4:2:0' to use chroma subsampling (optional, default '4:4:4') */
|
1259
1261
|
chromaSubsampling?: string | undefined;
|
1262
|
+
/** Set bitdepth to 8, 10 or 12 bit (optional, default 8) */
|
1263
|
+
bitdepth?: 8 | 10 | 12 | undefined;
|
1260
1264
|
}
|
1261
1265
|
|
1262
1266
|
interface GifOptions extends OutputOptions, AnimationOptions {
|
@@ -1613,7 +1617,7 @@ declare namespace sharp {
|
|
1613
1617
|
|
1614
1618
|
type TextAlign = 'left' | 'centre' | 'center' | 'right';
|
1615
1619
|
|
1616
|
-
type TextWrap = 'word' | 'char' | '
|
1620
|
+
type TextWrap = 'word' | 'char' | 'word-char' | 'none';
|
1617
1621
|
|
1618
1622
|
type TileContainer = 'fs' | 'zip';
|
1619
1623
|
|
package/lib/input.js
CHANGED
@@ -345,10 +345,10 @@ function _createInputDescriptor (input, inputOptions, containerOptions) {
|
|
345
345
|
}
|
346
346
|
}
|
347
347
|
if (is.defined(inputOptions.text.wrap)) {
|
348
|
-
if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', '
|
348
|
+
if (is.string(inputOptions.text.wrap) && is.inArray(inputOptions.text.wrap, ['word', 'char', 'word-char', 'none'])) {
|
349
349
|
inputDescriptor.textWrap = inputOptions.text.wrap;
|
350
350
|
} else {
|
351
|
-
throw is.invalidParameterError('text.wrap', 'one of: word, char,
|
351
|
+
throw is.invalidParameterError('text.wrap', 'one of: word, char, word-char, none', inputOptions.text.wrap);
|
352
352
|
}
|
353
353
|
}
|
354
354
|
delete inputDescriptor.buffer;
|
package/lib/output.js
CHANGED
@@ -1011,6 +1011,7 @@ function tiff (options) {
|
|
1011
1011
|
* Use these AVIF options for output image.
|
1012
1012
|
*
|
1013
1013
|
* AVIF image sequences are not supported.
|
1014
|
+
* Prebuilt binaries support a bitdepth of 8 only.
|
1014
1015
|
*
|
1015
1016
|
* @example
|
1016
1017
|
* const data = await sharp(input)
|
@@ -1029,6 +1030,7 @@ function tiff (options) {
|
|
1029
1030
|
* @param {boolean} [options.lossless=false] - use lossless compression
|
1030
1031
|
* @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
|
1031
1032
|
* @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
|
1033
|
+
* @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
|
1032
1034
|
* @returns {Sharp}
|
1033
1035
|
* @throws {Error} Invalid options
|
1034
1036
|
*/
|
@@ -1055,6 +1057,7 @@ function avif (options) {
|
|
1055
1057
|
* @param {boolean} [options.lossless=false] - use lossless compression
|
1056
1058
|
* @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
|
1057
1059
|
* @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
|
1060
|
+
* @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
|
1058
1061
|
* @returns {Sharp}
|
1059
1062
|
* @throws {Error} Invalid options
|
1060
1063
|
*/
|
@@ -1093,6 +1096,16 @@ function heif (options) {
|
|
1093
1096
|
throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
|
1094
1097
|
}
|
1095
1098
|
}
|
1099
|
+
if (is.defined(options.bitdepth)) {
|
1100
|
+
if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {
|
1101
|
+
if (options.bitdepth !== 8 && this.constructor.versions.heif) {
|
1102
|
+
throw is.invalidParameterError('bitdepth when using prebuilt binaries', 8, options.bitdepth);
|
1103
|
+
}
|
1104
|
+
this.options.heifBitdepth = options.bitdepth;
|
1105
|
+
} else {
|
1106
|
+
throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);
|
1107
|
+
}
|
1108
|
+
}
|
1096
1109
|
} else {
|
1097
1110
|
throw is.invalidParameterError('options', 'Object', options);
|
1098
1111
|
}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@revizly/sharp",
|
3
3
|
"description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",
|
4
|
-
"version": "0.33.
|
4
|
+
"version": "0.33.3-revizly4",
|
5
5
|
"author": "Lovell Fuller <npm@lovell.info>",
|
6
6
|
"homepage": "https://sharp.pixelplumbing.com",
|
7
7
|
"contributors": [
|
@@ -137,41 +137,39 @@
|
|
137
137
|
],
|
138
138
|
"dependencies": {
|
139
139
|
"color": "^4.2.3",
|
140
|
-
"detect-libc": "^2.0.
|
140
|
+
"detect-libc": "^2.0.3",
|
141
141
|
"semver": "^7.6.0"
|
142
142
|
},
|
143
143
|
"optionalDependencies": {
|
144
|
-
"@revizly/sharp-libvips-linux-arm64": "1.0.
|
145
|
-
"@revizly/sharp-libvips-linux-x64": "1.0.
|
146
|
-
"@revizly/sharp-linux-arm64": "0.33.2-
|
147
|
-
"@revizly/sharp-linux-x64": "0.33.2-
|
144
|
+
"@revizly/sharp-libvips-linux-arm64": "1.0.3",
|
145
|
+
"@revizly/sharp-libvips-linux-x64": "1.0.3",
|
146
|
+
"@revizly/sharp-linux-arm64": "0.33.2-revizly8",
|
147
|
+
"@revizly/sharp-linux-x64": "0.33.2-revizly8"
|
148
148
|
},
|
149
149
|
"devDependencies": {
|
150
|
-
"@emnapi/runtime": "^1.
|
151
|
-
"@revizly/sharp-libvips-dev": "1.0.
|
152
|
-
"@revizly/sharp-libvips-win32-ia32": "1.0.1",
|
153
|
-
"@revizly/sharp-libvips-win32-x64": "1.0.1",
|
150
|
+
"@emnapi/runtime": "^1.1.0",
|
151
|
+
"@revizly/sharp-libvips-dev": "1.0.3",
|
154
152
|
"@types/node": "*",
|
155
153
|
"async": "^3.2.5",
|
156
154
|
"cc": "^3.0.1",
|
157
|
-
"emnapi": "^1.
|
155
|
+
"emnapi": "^1.1.0",
|
158
156
|
"exif-reader": "^2.0.1",
|
159
157
|
"extract-zip": "^2.0.1",
|
160
158
|
"icc": "^3.0.0",
|
161
159
|
"jsdoc-to-markdown": "^8.0.1",
|
162
160
|
"license-checker": "^25.0.1",
|
163
161
|
"mocha": "^10.3.0",
|
164
|
-
"node-addon-api": "^
|
162
|
+
"node-addon-api": "^8.0.0",
|
165
163
|
"nyc": "^15.1.0",
|
166
164
|
"prebuild": "^13.0.0",
|
167
165
|
"semistandard": "^17.0.0",
|
168
166
|
"tar-fs": "^3.0.5",
|
169
|
-
"tsd": "^0.30.
|
167
|
+
"tsd": "^0.30.7"
|
170
168
|
},
|
171
169
|
"license": "Apache-2.0",
|
172
170
|
"engines": {
|
173
171
|
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
|
174
|
-
"libvips": ">=8.15.
|
172
|
+
"libvips": ">=8.15.2"
|
175
173
|
},
|
176
174
|
"funding": {
|
177
175
|
"url": "https://opencollective.com/libvips"
|
package/src/common.h
CHANGED
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
#if (VIPS_MAJOR_VERSION < 8) || \
|
18
18
|
(VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 15) || \
|
19
|
-
(VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 15 && VIPS_MICRO_VERSION <
|
20
|
-
#error "libvips version 8.15.
|
19
|
+
(VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 15 && VIPS_MICRO_VERSION < 2)
|
20
|
+
#error "libvips version 8.15.2+ is required - please see https://sharp.pixelplumbing.com/install"
|
21
21
|
#endif
|
22
22
|
|
23
23
|
#if ((!defined(__clang__)) && defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))
|
package/src/pipeline.cc
CHANGED
@@ -54,7 +54,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
54
54
|
sharp::ImageType inputImageType;
|
55
55
|
std::tie(image, inputImageType) = sharp::OpenInput(baton->input);
|
56
56
|
VipsAccess access = baton->input->access;
|
57
|
-
image = sharp::EnsureColourspace(image, baton->
|
57
|
+
image = sharp::EnsureColourspace(image, baton->colourspacePipeline);
|
58
58
|
|
59
59
|
int nPages = baton->input->pages;
|
60
60
|
if (nPages == -1) {
|
@@ -189,7 +189,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
189
189
|
// - input colourspace is not specified;
|
190
190
|
bool const shouldPreShrink = (targetResizeWidth > 0 || targetResizeHeight > 0) &&
|
191
191
|
baton->gamma == 0 && baton->topOffsetPre == -1 && baton->trimThreshold < 0.0 &&
|
192
|
-
baton->
|
192
|
+
baton->colourspacePipeline == VIPS_INTERPRETATION_LAST && !shouldRotateBefore;
|
193
193
|
|
194
194
|
if (shouldPreShrink) {
|
195
195
|
// The common part of the shrink: the bit by which both axes must be shrunk
|
@@ -331,6 +331,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
331
331
|
sharp::HasProfile(image) &&
|
332
332
|
image.interpretation() != VIPS_INTERPRETATION_LABS &&
|
333
333
|
image.interpretation() != VIPS_INTERPRETATION_GREY16 &&
|
334
|
+
baton->colourspacePipeline != VIPS_INTERPRETATION_CMYK &&
|
334
335
|
!baton->input->ignoreIcc
|
335
336
|
) {
|
336
337
|
// Convert to sRGB/P3 using embedded profile
|
@@ -344,7 +345,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
344
345
|
}
|
345
346
|
} else if (
|
346
347
|
image.interpretation() == VIPS_INTERPRETATION_CMYK &&
|
347
|
-
baton->
|
348
|
+
baton->colourspacePipeline != VIPS_INTERPRETATION_CMYK
|
348
349
|
) {
|
349
350
|
image = image.icc_transform(processingProfile, VImage::option()
|
350
351
|
->set("input_profile", "cmyk")
|
@@ -432,7 +433,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
432
433
|
for (unsigned int i = 0; i < baton->joinChannelIn.size(); i++) {
|
433
434
|
baton->joinChannelIn[i]->access = access;
|
434
435
|
std::tie(joinImage, joinImageType) = sharp::OpenInput(baton->joinChannelIn[i]);
|
435
|
-
joinImage = sharp::EnsureColourspace(joinImage, baton->
|
436
|
+
joinImage = sharp::EnsureColourspace(joinImage, baton->colourspacePipeline);
|
436
437
|
image = image.bandjoin(joinImage);
|
437
438
|
}
|
438
439
|
image = image.copy(VImage::option()->set("interpretation", baton->colourspace));
|
@@ -642,7 +643,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
642
643
|
sharp::ImageType compositeImageType = sharp::ImageType::UNKNOWN;
|
643
644
|
composite->input->access = access;
|
644
645
|
std::tie(compositeImage, compositeImageType) = sharp::OpenInput(composite->input);
|
645
|
-
compositeImage = sharp::EnsureColourspace(compositeImage, baton->
|
646
|
+
compositeImage = sharp::EnsureColourspace(compositeImage, baton->colourspacePipeline);
|
646
647
|
// Verify within current dimensions
|
647
648
|
if (compositeImage.width() > image.width() || compositeImage.height() > image.height()) {
|
648
649
|
throw vips::VError("Image to composite must have same dimensions or smaller");
|
@@ -743,7 +744,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
743
744
|
sharp::ImageType booleanImageType = sharp::ImageType::UNKNOWN;
|
744
745
|
baton->boolean->access = access;
|
745
746
|
std::tie(booleanImage, booleanImageType) = sharp::OpenInput(baton->boolean);
|
746
|
-
booleanImage = sharp::EnsureColourspace(booleanImage, baton->
|
747
|
+
booleanImage = sharp::EnsureColourspace(booleanImage, baton->colourspacePipeline);
|
747
748
|
image = sharp::Boolean(image, booleanImage, baton->booleanOp);
|
748
749
|
image = sharp::RemoveGifPalette(image);
|
749
750
|
}
|
@@ -776,7 +777,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
776
777
|
// Convert colourspace, pass the current known interpretation so libvips doesn't have to guess
|
777
778
|
image = image.colourspace(baton->colourspace, VImage::option()->set("source_space", image.interpretation()));
|
778
779
|
// Transform colours from embedded profile to output profile
|
779
|
-
if ((baton->keepMetadata & VIPS_FOREIGN_KEEP_ICC) && baton->
|
780
|
+
if ((baton->keepMetadata & VIPS_FOREIGN_KEEP_ICC) && baton->colourspacePipeline != VIPS_INTERPRETATION_CMYK &&
|
780
781
|
baton->withIccProfile.empty() && sharp::HasProfile(image)) {
|
781
782
|
image = image.icc_transform(processingProfile, VImage::option()
|
782
783
|
->set("embedded", TRUE)
|
@@ -988,7 +989,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
988
989
|
->set("Q", baton->heifQuality)
|
989
990
|
->set("compression", baton->heifCompression)
|
990
991
|
->set("effort", baton->heifEffort)
|
991
|
-
->set("bitdepth",
|
992
|
+
->set("bitdepth", baton->heifBitdepth)
|
992
993
|
->set("subsample_mode", baton->heifChromaSubsampling == "4:4:4"
|
993
994
|
? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON)
|
994
995
|
->set("lossless", baton->heifLossless)));
|
@@ -1181,7 +1182,7 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|
1181
1182
|
->set("Q", baton->heifQuality)
|
1182
1183
|
->set("compression", baton->heifCompression)
|
1183
1184
|
->set("effort", baton->heifEffort)
|
1184
|
-
->set("bitdepth",
|
1185
|
+
->set("bitdepth", baton->heifBitdepth)
|
1185
1186
|
->set("subsample_mode", baton->heifChromaSubsampling == "4:4:4"
|
1186
1187
|
? VIPS_FOREIGN_SUBSAMPLE_OFF : VIPS_FOREIGN_SUBSAMPLE_ON)
|
1187
1188
|
->set("lossless", baton->heifLossless));
|
@@ -1607,10 +1608,10 @@ Napi::Value pipeline(const Napi::CallbackInfo& info) {
|
|
1607
1608
|
baton->recombMatrix[i] = sharp::AttrAsDouble(recombMatrix, i);
|
1608
1609
|
}
|
1609
1610
|
}
|
1610
|
-
baton->
|
1611
|
-
options, "
|
1612
|
-
if (baton->
|
1613
|
-
baton->
|
1611
|
+
baton->colourspacePipeline = sharp::AttrAsEnum<VipsInterpretation>(
|
1612
|
+
options, "colourspacePipeline", VIPS_TYPE_INTERPRETATION);
|
1613
|
+
if (baton->colourspacePipeline == VIPS_INTERPRETATION_ERROR) {
|
1614
|
+
baton->colourspacePipeline = VIPS_INTERPRETATION_LAST;
|
1614
1615
|
}
|
1615
1616
|
baton->colourspace = sharp::AttrAsEnum<VipsInterpretation>(options, "colourspace", VIPS_TYPE_INTERPRETATION);
|
1616
1617
|
if (baton->colourspace == VIPS_INTERPRETATION_ERROR) {
|
@@ -1695,6 +1696,7 @@ Napi::Value pipeline(const Napi::CallbackInfo& info) {
|
|
1695
1696
|
options, "heifCompression", VIPS_TYPE_FOREIGN_HEIF_COMPRESSION);
|
1696
1697
|
baton->heifEffort = sharp::AttrAsUint32(options, "heifEffort");
|
1697
1698
|
baton->heifChromaSubsampling = sharp::AttrAsStr(options, "heifChromaSubsampling");
|
1699
|
+
baton->heifBitdepth = sharp::AttrAsUint32(options, "heifBitdepth");
|
1698
1700
|
baton->jxlDistance = sharp::AttrAsDouble(options, "jxlDistance");
|
1699
1701
|
baton->jxlDecodingTier = sharp::AttrAsUint32(options, "jxlDecodingTier");
|
1700
1702
|
baton->jxlEffort = sharp::AttrAsUint32(options, "jxlEffort");
|
package/src/pipeline.h
CHANGED
@@ -181,6 +181,7 @@ struct PipelineBaton {
|
|
181
181
|
int heifEffort;
|
182
182
|
std::string heifChromaSubsampling;
|
183
183
|
bool heifLossless;
|
184
|
+
int heifBitdepth;
|
184
185
|
double jxlDistance;
|
185
186
|
int jxlDecodingTier;
|
186
187
|
int jxlEffort;
|
@@ -205,7 +206,7 @@ struct PipelineBaton {
|
|
205
206
|
int extractChannel;
|
206
207
|
bool removeAlpha;
|
207
208
|
double ensureAlpha;
|
208
|
-
VipsInterpretation
|
209
|
+
VipsInterpretation colourspacePipeline;
|
209
210
|
VipsInterpretation colourspace;
|
210
211
|
std::vector<int> delay;
|
211
212
|
int loop;
|
@@ -349,6 +350,7 @@ struct PipelineBaton {
|
|
349
350
|
heifEffort(4),
|
350
351
|
heifChromaSubsampling("4:4:4"),
|
351
352
|
heifLossless(false),
|
353
|
+
heifBitdepth(8),
|
352
354
|
jxlDistance(1.0),
|
353
355
|
jxlDecodingTier(0),
|
354
356
|
jxlEffort(7),
|
@@ -369,7 +371,7 @@ struct PipelineBaton {
|
|
369
371
|
extractChannel(-1),
|
370
372
|
removeAlpha(false),
|
371
373
|
ensureAlpha(-1.0),
|
372
|
-
|
374
|
+
colourspacePipeline(VIPS_INTERPRETATION_LAST),
|
373
375
|
colourspace(VIPS_INTERPRETATION_LAST),
|
374
376
|
loop(-1),
|
375
377
|
tileSize(256),
|