Skip to content

Commit

Permalink
Guard heif bitdepth property for prebuilt binaries
Browse files Browse the repository at this point in the history
  • Loading branch information
lovell committed Mar 21, 2024
1 parent 3c26080 commit aa1bbcb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/output.js
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,7 @@ function tiff (options) {
* Use these AVIF options for output image.
*
* AVIF image sequences are not supported.
* Prebuilt binaries support a bitdepth of 8 only.
*
* @example
* const data = await sharp(input)
Expand Down Expand Up @@ -1097,6 +1098,9 @@ function heif (options) {
}
if (is.defined(options.bitdepth)) {
if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {
if (options.bitdepth !== 8 && this.constructor.versions.heif) {
throw is.invalidParameterError('bitdepth when using prebuilt binaries', 8, options.bitdepth);
}
this.options.heifBitdepth = options.bitdepth;
} else {
throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);
Expand Down
7 changes: 7 additions & 0 deletions test/unit/heif.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,16 @@ describe('HEIF', () => {
});
});
it('valid bitdepth value does not throw an error', () => {
const { heif } = sharp.versions;
delete sharp.versions.heif;
assert.doesNotThrow(() => {
sharp().heif({ compression: 'av1', bitdepth: 12 });
});
sharp.versions.heif = '1.2.3';
assert.throws(() => {
sharp().heif({ compression: 'av1', bitdepth: 10 });
}, /Error: Expected 8 for bitdepth when using prebuilt binaries but received 10 of type number/);
sharp.versions.heif = heif;
});
it('invalid bitdepth value should throw an error', () => {
assert.throws(() => {
Expand Down

0 comments on commit aa1bbcb

Please sign in to comment.