@browser-mc/webcodecs-avif 0.2.0 → 0.4.0

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/README.md CHANGED
@@ -19,6 +19,52 @@ await fetch('/upload', {
19
19
 
20
20
  `encodeImageToAvif` defaults to AV1 4:4:4 chroma (`chromaSubsampling: '444'`). Pass `chromaSubsampling: '420'` when smaller 4:2:0 output or broader baseline-style compatibility is preferred.
21
21
 
22
+ ## Preserve AVIF Color Metadata
23
+
24
+ Chromium's `ImageDecoder` may decode an AVIF into a `VideoFrame` whose `colorSpace` omits fields that were present in the AVIF container, such as PQ or HLG transfer characteristics. AVIF may also carry ICC profiles. When re-encoding an AVIF, read the original container color metadata and pass it explicitly:
25
+
26
+ ```ts
27
+ import { encodeImageToAvif, readAvifColorMetadata } from '@browser-mc/webcodecs-avif';
28
+
29
+ const input = new Uint8Array(await file.arrayBuffer());
30
+ const colorMetadata = readAvifColorMetadata(input);
31
+ const decoder = new ImageDecoder({
32
+ data: input,
33
+ type: 'image/avif',
34
+ colorSpaceConversion: 'none',
35
+ });
36
+ const frame = (await decoder.decode({ frameIndex: 0, completeFramesOnly: true })).image;
37
+
38
+ try {
39
+ const avif = await encodeImageToAvif(frame, {
40
+ quality: 0.72,
41
+ colorMetadata: colorMetadata ?? undefined,
42
+ });
43
+ } finally {
44
+ frame.close();
45
+ decoder.close();
46
+ }
47
+ ```
48
+
49
+ ## Alpha
50
+
51
+ Pass `alpha: 'keep'` to preserve transparency:
52
+
53
+ ```ts
54
+ const avif = await encodeImageToAvif(source, {
55
+ quality: 0.72,
56
+ alpha: 'keep',
57
+ });
58
+ ```
59
+
60
+ AVIF stores alpha as a separate auxiliary image item, not as an alpha channel inside the color AV1 image. When the source has transparent pixels, this package builds that auxiliary image by drawing the source to Canvas, reading `ImageData`, and copying each pixel's alpha value into RGB:
61
+
62
+ - alpha `0` becomes black, meaning transparent
63
+ - alpha `128` becomes gray, meaning partially transparent
64
+ - alpha `255` becomes white, meaning opaque
65
+
66
+ The generated grayscale mask is encoded as a second AV1 still image and muxed as the color image's alpha auxiliary item. Opaque sources skip the auxiliary item. `VideoFrame` inputs whose format cannot carry alpha, such as `I420`, `I422`, `I444`, and their `P10` or `P12` variants, skip the Canvas alpha scan too. Because the alpha path uses Canvas `ImageData`, the alpha mask is currently 8-bit even when the source `VideoFrame` uses a higher-bit-depth planar format.
67
+
22
68
  ## Mux An Existing AV1 Still Frame
23
69
 
24
70
  ```ts
@@ -64,7 +110,7 @@ node packages/webcodecs-avif/test/encode-jpeg-to-avif.mjs
64
110
  ## Notes
65
111
 
66
112
  - Requires WebCodecs for encoding/decoding.
67
- - Alpha can be kept with `alpha: 'keep'`, which writes an auxiliary alpha AVIF item.
113
+ - Chromium may report 8-bit AV1 still-image encode support even when 10-bit AV1 encode is not available. This package chooses the default codec from the source frame's pixel format bit depth, not from HDR or BT.2020 color metadata alone. It does not silently change a high-bit-depth `VideoFrame` to 8-bit, because changing only the codec string does not change the frame's pixel format and can make `VideoEncoder.encode()` reject the frame. Callers that want an 8-bit fallback should convert the frame first, then pass an explicit 8-bit codec such as `av01.1.08M.08` or `av01.0.08M.08`.
68
114
  - The muxer writes a minimal still-image AVIF and does not preserve arbitrary source AVIF boxes.
69
- - `av1C` and `pixi` are derived from the AV1 Sequence Header OBU. `colr` uses source `VideoFrame.colorSpace` metadata when available, then falls back to the AV1 Sequence Header. Profile compatibility brands are emitted only when the encoded image meets the matching AVIF profile constraints.
115
+ - `av1C` and `pixi` are derived from the AV1 Sequence Header OBU. `colr` uses explicit `EncodeAvifOptions.colorMetadata` first, then `EncodeAvifOptions.color` CICP metadata, then `EncodeAvifOptions.colorSpace` or source `VideoFrame.colorSpace` metadata, then falls back field-by-field to the AV1 Sequence Header. ICC metadata is written as `colr/prof`. Profile compatibility brands are emitted only when the encoded image meets the matching AVIF profile constraints.
70
116
  - Container-specific mux helpers live in `@browser-mc/media-container`; this package re-exports the AVIF helpers for convenience.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { type EncodedStillAv1 } from '@browser-mc/media-container';
2
- export type { AvifMetadataItem, EncodedStillAv1, MuxStillAvifOptions, } from '@browser-mc/media-container';
3
- export { findSequenceHeaderObu, makeAv1Config, muxStillAvif, } from '@browser-mc/media-container';
1
+ import { type EncodedStillAv1, type CicpColorSpace, type ImageColorMetadata } from '@browser-mc/media-container';
2
+ export type { AvifMetadataItem, EncodedStillAv1, CicpColorSpace, ImageColorMetadata, MuxStillAvifOptions, } from '@browser-mc/media-container';
3
+ export { findSequenceHeaderObu, makeAv1Config, muxStillAvif, readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace, } from '@browser-mc/media-container';
4
4
  export type EncodeAvifOptions = {
5
5
  quality?: number;
6
6
  width?: number;
@@ -10,7 +10,35 @@ export type EncodeAvifOptions = {
10
10
  bitrate?: number;
11
11
  av1Config?: Uint8Array;
12
12
  alpha?: 'discard' | 'keep';
13
+ colorMetadata?: ImageColorMetadata;
14
+ colorSpace?: VideoColorSpaceInit;
15
+ color?: CicpColorSpace;
13
16
  };
17
+ export type AvifEncodeSupportOptions = {
18
+ width?: number;
19
+ height?: number;
20
+ bitrate?: number;
21
+ alpha?: 'discard' | 'keep';
22
+ };
23
+ export type AvifEncodeSupport = {
24
+ supported: boolean;
25
+ variants: {
26
+ yuv444: {
27
+ bit8: boolean;
28
+ bit10: boolean;
29
+ };
30
+ yuv420: {
31
+ bit8: boolean;
32
+ bit10: boolean;
33
+ };
34
+ };
35
+ preferredCodec: string | null;
36
+ error: {
37
+ name: string;
38
+ message: string;
39
+ } | null;
40
+ };
41
+ export declare function checkAvifEncodeSupport(options?: AvifEncodeSupportOptions): Promise<AvifEncodeSupport>;
14
42
  export declare function encodeImageToAv1(source: CanvasImageSource | VideoFrame, options?: EncodeAvifOptions): Promise<EncodedStillAv1>;
15
43
  export declare function encodeImageToAvif(source: CanvasImageSource | VideoFrame, options?: EncodeAvifOptions): Promise<Uint8Array>;
16
44
  export declare function decodeAv1Still(encoded: EncodedStillAv1): Promise<VideoFrame>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,YAAY,GACb,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B,CAAC;AAMF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAIxI;AAyKD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAEpI;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBlF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAE3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE;QACR,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC;QAC1C,MAAM,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC;KAC3C,CAAC;IACF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjD,CAAC;AAMF,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmD/G;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAIxI;AA6JD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAEpI;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBlF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAE3E"}
package/dist/index.js CHANGED
@@ -1,6 +1,59 @@
1
1
  import { bytesEqual, concat } from '@browser-mc/binary';
2
2
  import { findSequenceHeaderObu, makeAv1Config, muxStillAvif, } from '@browser-mc/media-container';
3
- export { findSequenceHeaderObu, makeAv1Config, muxStillAvif, } from '@browser-mc/media-container';
3
+ import { describePlanarFormat, frameFormatCanHaveAlpha, } from '@browser-mc/webcodecs-color';
4
+ export { findSequenceHeaderObu, makeAv1Config, muxStillAvif, readAvifCicpColor, readAvifColorMetadata, readAvifColorSpace, } from '@browser-mc/media-container';
5
+ export async function checkAvifEncodeSupport(options = {}) {
6
+ if (typeof VideoEncoder === 'undefined') {
7
+ return {
8
+ supported: false,
9
+ variants: {
10
+ yuv444: { bit8: false, bit10: false },
11
+ yuv420: { bit8: false, bit10: false },
12
+ },
13
+ preferredCodec: null,
14
+ error: { name: 'Error', message: 'VideoEncoder API is not available in this environment' },
15
+ };
16
+ }
17
+ try {
18
+ const [yuv444Bit8, yuv444Bit10, yuv420Bit8, yuv420Bit10] = await Promise.all([
19
+ isAvifCodecSupported(codecForSubsampling('444', 8), options),
20
+ isAvifCodecSupported(codecForSubsampling('444', 10), options),
21
+ isAvifCodecSupported(codecForSubsampling('420', 8), options),
22
+ isAvifCodecSupported(codecForSubsampling('420', 10), options),
23
+ ]);
24
+ const preferredCodec = yuv444Bit8
25
+ ? codecForSubsampling('444', 8)
26
+ : yuv420Bit8
27
+ ? codecForSubsampling('420', 8)
28
+ : yuv444Bit10
29
+ ? codecForSubsampling('444', 10)
30
+ : yuv420Bit10
31
+ ? codecForSubsampling('420', 10)
32
+ : null;
33
+ return {
34
+ supported: preferredCodec !== null,
35
+ variants: {
36
+ yuv444: { bit8: yuv444Bit8, bit10: yuv444Bit10 },
37
+ yuv420: { bit8: yuv420Bit8, bit10: yuv420Bit10 },
38
+ },
39
+ preferredCodec,
40
+ error: null,
41
+ };
42
+ }
43
+ catch (error) {
44
+ return {
45
+ supported: false,
46
+ variants: {
47
+ yuv444: { bit8: false, bit10: false },
48
+ yuv420: { bit8: false, bit10: false },
49
+ },
50
+ preferredCodec: null,
51
+ error: error instanceof Error
52
+ ? { name: error.name, message: error.message }
53
+ : { name: 'Error', message: String(error) },
54
+ };
55
+ }
56
+ }
4
57
  export async function encodeImageToAv1(source, options = {}) {
5
58
  assertWebCodecs();
6
59
  if (options.alpha === 'keep')
@@ -9,15 +62,15 @@ export async function encodeImageToAv1(source, options = {}) {
9
62
  }
10
63
  async function encodeImageToAv1WithAlpha(source, options) {
11
64
  const alphaSource = extractAlphaCanvas(source, options);
12
- const [color, alpha] = await Promise.all([
13
- encodeImageToAv1Color(source, { ...options, alpha: 'discard' }),
14
- encodeImageToAv1Color(alphaSource, {
15
- ...options,
16
- alpha: 'discard',
17
- codec: options.codec ?? codecForSubsampling(options.chromaSubsampling ?? '444', 8),
18
- bitrate: options.bitrate ?? alphaBitrate(source, options),
19
- }),
20
- ]);
65
+ const color = await encodeImageToAv1Color(source, { ...options, alpha: 'discard' });
66
+ if (!alphaSource)
67
+ return color;
68
+ const alpha = await encodeImageToAv1Color(alphaSource, {
69
+ ...options,
70
+ alpha: 'discard',
71
+ codec: options.codec ?? codecForSubsampling(options.chromaSubsampling ?? '444', 8),
72
+ bitrate: options.bitrate ?? alphaBitrate(source, options),
73
+ });
21
74
  return { ...color, alpha };
22
75
  }
23
76
  async function encodeImageToAv1Color(source, options = {}) {
@@ -25,7 +78,7 @@ async function encodeImageToAv1Color(source, options = {}) {
25
78
  const height = options.height ?? sourceHeight(source);
26
79
  const codec = options.codec ?? preferredCodecForSource(source, options.chromaSubsampling);
27
80
  const bitrate = options.bitrate ?? Math.max(80_000, Math.round(width * height * (options.quality ?? 0.8) * 0.7));
28
- const colorSpace = source instanceof VideoFrame ? source.colorSpace.toJSON() : undefined;
81
+ const colorSpace = options.colorSpace ?? (source instanceof VideoFrame ? source.colorSpace.toJSON() : undefined);
29
82
  const encoderConfig = {
30
83
  codec,
31
84
  width,
@@ -35,7 +88,7 @@ async function encodeImageToAv1Color(source, options = {}) {
35
88
  alpha: options.alpha ?? 'discard',
36
89
  latencyMode: 'quality',
37
90
  };
38
- const support = await supportedEncoderConfig(encoderConfig, options.codec === undefined && codec.endsWith('.10'));
91
+ const support = await VideoEncoder.isConfigSupported(encoderConfig);
39
92
  if (!support.supported)
40
93
  throw new Error(`VideoEncoder does not support ${codec}`);
41
94
  const config = support.config;
@@ -46,20 +99,7 @@ async function encodeImageToAv1Color(source, options = {}) {
46
99
  let metadataConfig;
47
100
  let chunks = [];
48
101
  try {
49
- try {
50
- ({ chunks, metadataConfig } = await encodeFrame(frame, config));
51
- }
52
- catch (error) {
53
- if (!(source instanceof VideoFrame) || !config.codec.endsWith('.08') || !isHighBitdepthOrHdrFrame(source))
54
- throw error;
55
- const fallbackFrame = makeCanvasSdrFrame(source, width, height);
56
- try {
57
- ({ chunks, metadataConfig } = await encodeFrame(fallbackFrame, config));
58
- }
59
- finally {
60
- fallbackFrame.close();
61
- }
62
- }
102
+ ({ chunks, metadataConfig } = await encodeFrame(frame, config));
63
103
  }
64
104
  finally {
65
105
  if (shouldCloseFrame)
@@ -82,19 +122,11 @@ async function encodeImageToAv1Color(source, options = {}) {
82
122
  throw new Error('Provided av1Config does not match the encoded AV1 Sequence Header OBU');
83
123
  }
84
124
  const av1Config = generatedAv1Config;
85
- return { chunk, decoderConfig, av1Config, width, height };
125
+ return { chunk, decoderConfig, av1Config, width, height, colorMetadata: options.colorMetadata, color: options.color };
86
126
  }
87
127
  function makeFrameFromCanvasSource(canvasSource) {
88
128
  return new VideoFrame(canvasSource, { timestamp: 0, duration: 1_000_000 });
89
129
  }
90
- function makeCanvasSdrFrame(source, width, height) {
91
- const canvas = new OffscreenCanvas(width, height);
92
- const context = canvas.getContext('2d', { colorSpace: 'srgb' });
93
- if (!context)
94
- throw new Error('Could not create 2D canvas context');
95
- context.drawImage(source, 0, 0, width, height);
96
- return makeFrameFromCanvasSource(canvas);
97
- }
98
130
  async function encodeFrame(frame, config) {
99
131
  let metadataConfig;
100
132
  const chunks = [];
@@ -122,6 +154,8 @@ async function encodeFrame(frame, config) {
122
154
  return { chunks, metadataConfig };
123
155
  }
124
156
  function extractAlphaCanvas(source, options) {
157
+ if (source instanceof VideoFrame && !frameFormatCanHaveAlpha(source))
158
+ return null;
125
159
  const width = options.width ?? sourceWidth(source);
126
160
  const height = options.height ?? sourceHeight(source);
127
161
  const canvas = new OffscreenCanvas(width, height);
@@ -130,13 +164,18 @@ function extractAlphaCanvas(source, options) {
130
164
  throw new Error('Could not create 2D canvas context');
131
165
  context.drawImage(source, 0, 0, width, height);
132
166
  const image = context.getImageData(0, 0, width, height);
167
+ let hasTransparency = false;
133
168
  for (let offset = 0; offset < image.data.length; offset += 4) {
134
169
  const alpha = image.data[offset + 3];
170
+ if (alpha !== 255)
171
+ hasTransparency = true;
135
172
  image.data[offset] = alpha;
136
173
  image.data[offset + 1] = alpha;
137
174
  image.data[offset + 2] = alpha;
138
175
  image.data[offset + 3] = 255;
139
176
  }
177
+ if (!hasTransparency)
178
+ return null;
140
179
  context.putImageData(image, 0, 0);
141
180
  return canvas;
142
181
  }
@@ -145,34 +184,35 @@ function alphaBitrate(source, options) {
145
184
  const height = options.height ?? sourceHeight(source);
146
185
  return Math.max(40_000, Math.round(width * height * (options.quality ?? 0.8) * 0.35));
147
186
  }
148
- async function supportedEncoderConfig(config, allowEightBitFallback) {
149
- const support = await VideoEncoder.isConfigSupported(config);
150
- if (support.supported || !allowEightBitFallback)
151
- return support;
152
- return VideoEncoder.isConfigSupported({
153
- ...config,
154
- codec: config.codec.replace(/\.10(?=$|[.])/u, '.08'),
187
+ async function isAvifCodecSupported(codec, options) {
188
+ const support = await VideoEncoder.isConfigSupported({
189
+ codec,
190
+ width: options.width ?? 2,
191
+ height: options.height ?? 2,
192
+ bitrate: options.bitrate ?? 80_000,
193
+ framerate: 1,
194
+ alpha: options.alpha ?? 'discard',
195
+ latencyMode: 'quality',
155
196
  });
197
+ return support.supported === true;
156
198
  }
157
199
  function preferredCodecForSource(source, chromaSubsampling) {
158
200
  const subsampling = chromaSubsampling ?? '444';
159
201
  if (!(source instanceof VideoFrame))
160
202
  return codecForSubsampling(subsampling, 8);
161
- return codecForSubsampling(subsampling, isHighBitdepthOrHdrFrame(source) ? 10 : 8);
203
+ return codecForSubsampling(subsampling, isHighBitdepthFrame(source) ? 10 : 8);
162
204
  }
163
205
  function codecForSubsampling(chromaSubsampling, bitDepth) {
164
206
  const profile = chromaSubsampling === '444' ? 1 : 0;
165
207
  return `av01.${profile}.08M.${String(bitDepth).padStart(2, '0')}`;
166
208
  }
167
- function isHighBitdepthOrHdrFrame(source) {
168
- const colorSpace = source.colorSpace;
209
+ function isHighBitdepthFrame(source) {
169
210
  const format = source.format ?? '';
170
- const transfer = String(colorSpace.transfer ?? '');
171
- const primaries = String(colorSpace.primaries ?? '');
172
- const usesHdrTransfer = transfer === 'pq' || transfer === 'hlg' || transfer === 'smpte2084' || transfer === 'arib-std-b67';
173
- const usesHdrPrimaries = primaries === 'bt2020';
211
+ const planar = describePlanarFormat(format);
212
+ if (planar)
213
+ return planar.bitDepth > 8;
174
214
  const usesHighBitdepthFormat = /(?:P010|P012|P016|I\d+P1[026]|10|12|16)/.test(format);
175
- return usesHdrTransfer || usesHdrPrimaries || usesHighBitdepthFormat;
215
+ return usesHighBitdepthFormat;
176
216
  }
177
217
  export async function encodeImageToAvif(source, options = {}) {
178
218
  return muxStillAvif(await encodeImageToAv1(source, options));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browser-mc/webcodecs-avif",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,8 +16,9 @@
16
16
  }
17
17
  },
18
18
  "dependencies": {
19
- "@browser-mc/media-container": "^0.2.0",
20
- "@browser-mc/binary": "^0.0.1"
19
+ "@browser-mc/binary": "^0.0.1",
20
+ "@browser-mc/media-container": "^0.3.0",
21
+ "@browser-mc/webcodecs-color": "^0.1.0"
21
22
  },
22
23
  "files": [
23
24
  "dist",