@browser-mc/webcodecs-color 0.0.1 → 0.1.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
@@ -22,22 +22,26 @@ console.log(classifyFrameColor(frame));
22
22
  frame.close();
23
23
  ```
24
24
 
25
- ## Canvas-Free Raw Resize
25
+ ## Resize Planar VideoFrame
26
26
 
27
27
  ```ts
28
- import { resizeFrameRaw } from '@browser-mc/webcodecs-color';
28
+ import { resizeFramePlanar } from '@browser-mc/webcodecs-color';
29
29
 
30
- const resized = await resizeFrameRaw(frame, {
30
+ const resized4208 = await resizeFramePlanar(frame, {
31
31
  width: 1024,
32
32
  height: 682,
33
+ chromaSubsampling: '420',
34
+ bitDepth: 8,
33
35
  algorithm: 'bilinear',
34
36
  });
35
37
 
36
- console.log(resized.inspection);
37
- resized.frame.close();
38
+ console.log(resized4208.inspection);
39
+ resized4208.frame.close();
38
40
  ```
39
41
 
40
- `resizeFrameRaw` uses `VideoFrame.copyTo()` and creates a new `VideoFrame` from resized planar data. It copies only the source `visibleRect`, so coded padding rows/columns are not fed into the resize. It does not use `HTMLCanvasElement`, `OffscreenCanvas`, WebGL, or WebGPU.
42
+ `resizeFramePlanar` uses `VideoFrame.copyTo()` and creates a new `VideoFrame` from processed planar data. It copies only the source `visibleRect`, so coded padding rows/columns are not fed into processing. For supported planar YUV frames, it does resize, chroma downsampling, and bit-depth conversion in one pass over the copied data. It does not use `HTMLCanvasElement`, `OffscreenCanvas`, WebGL, or WebGPU.
43
+
44
+ Packed formats such as `RGBA` and `BGRA` are intentionally out of scope for this helper; use the Canvas helpers for those paths.
41
45
 
42
46
  ### Why Not WebGPU?
43
47
 
@@ -48,7 +52,11 @@ WebGPU may become useful if the pipeline can keep frames on the GPU for several
48
52
  ## Comparison Helpers
49
53
 
50
54
  ```ts
51
- import { convertFrameToCanvasSdr, copyFrameToRgba, resizeFrameWithCanvas } from '@browser-mc/webcodecs-color';
55
+ import {
56
+ convertFrameToCanvasSdr,
57
+ copyFrameToRgba,
58
+ resizeFrameWithCanvas,
59
+ } from '@browser-mc/webcodecs-color';
52
60
 
53
61
  const rgba = await copyFrameToRgba(frame, { colorSpace: 'display-p3' });
54
62
  const canvasResized = resizeFrameWithCanvas(frame, { width: 1024, height: 682 });
@@ -57,10 +65,25 @@ const canvasSdr = convertFrameToCanvasSdr(frame);
57
65
 
58
66
  `convertFrameToCanvasSdr` draws through an sRGB `OffscreenCanvas` path and returns an RGBA `VideoFrame` marked as BT.709 SDR. It is a practical browser conversion helper, not a dedicated HDR tone-mapping engine.
59
67
 
60
- ## Supported Raw Resize Formats
68
+ ## Supported Planar Formats
69
+
70
+ - 8-bit: `I420`, `I422`, `I444`
71
+ - 10-bit: `I420P10`, `I422P10`, `I444P10`
72
+ - 12-bit: `I420P12`, `I422P12`, `I444P12`
73
+ - Alpha variants: `I420A`, `I420AP10`, `I420AP12`, `I422A`, `I422AP10`, `I422AP12`, `I444A`, `I444AP10`, `I444AP12`
74
+
75
+ Alpha-plane processing preserves alpha inside the returned `VideoFrame`. AVIF still stores alpha as an auxiliary image item, so callers that encode to AVIF should keep using the AVIF encoder's alpha handling.
76
+
77
+ ## Format Helpers
78
+
79
+ ```ts
80
+ import {
81
+ describePlanarFormat,
82
+ frameFormatCanHaveAlpha,
83
+ } from '@browser-mc/webcodecs-color';
84
+ ```
61
85
 
62
- - `NV12`, `I420`, `I422`, `I444`
63
- - Chromium 10-bit formats observed via WebCodecs: `I420P10`, `I422P10`, `I444P10`
86
+ `describePlanarFormat(format)` returns planar bit depth, chroma layout, alpha presence, bytes per sample, and plane layout metadata for the supported planar YUV/YUVA formats. `frameFormatCanHaveAlpha(frame)` returns `true` for alpha-capable `VideoFrame` formats such as `RGBA`, `BGRA`, and planar `*A` variants. Unknown `VideoFrame.format` values are treated conservatively as alpha-capable.
64
87
 
65
88
  ## Commands
66
89
 
@@ -70,4 +93,4 @@ pnpm --filter @browser-mc/webcodecs-color typecheck
70
93
  pnpm --filter @browser-mc/webcodecs-color test:electron
71
94
  ```
72
95
 
73
- `test:electron` uses `hdrrec2020.avif`. Current result keeps `I444P10` and `bt2020` metadata through raw resize.
96
+ `test:electron` uses `hdrrec2020.avif`. Current result keeps BT.2020 metadata through raw resize and planar conversion.
@@ -0,0 +1,18 @@
1
+ export type PlanarChromaSubsampling = '420' | '422' | '444';
2
+ export type PlanarBitDepth = 8 | 10 | 12;
3
+ export type PlanarFormatDescriptor = {
4
+ bytesPerSample: 1 | 2;
5
+ bitDepth: PlanarBitDepth;
6
+ hasAlpha: boolean;
7
+ planes: Array<{
8
+ subsampleX: number;
9
+ subsampleY: number;
10
+ samplesPerPixel?: 1 | 2;
11
+ }>;
12
+ };
13
+ export declare function frameFormatCanHaveAlpha(frame: VideoFrame): boolean;
14
+ export declare function describePlanarFormat(format: string): PlanarFormatDescriptor | null;
15
+ export declare function chromaSubsamplingFor(descriptor: PlanarFormatDescriptor): PlanarChromaSubsampling;
16
+ export declare function bitDepthFor(descriptor: PlanarFormatDescriptor): PlanarBitDepth;
17
+ export declare function planarFormatFor(chromaSubsampling: PlanarChromaSubsampling, bitDepth: PlanarBitDepth, hasAlpha: boolean): string;
18
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;CACpF,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,WAMxD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAyClF;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,sBAAsB,GAAG,uBAAuB,CAMhG;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,sBAAsB,GAAG,cAAc,CAE9E;AAED,wBAAgB,eAAe,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,UAKtH"}
@@ -0,0 +1,83 @@
1
+ export function frameFormatCanHaveAlpha(frame) {
2
+ const format = frame.format;
3
+ if (format === null)
4
+ return true;
5
+ return format === 'RGBA'
6
+ || format === 'BGRA'
7
+ || describePlanarFormat(format)?.hasAlpha === true;
8
+ }
9
+ export function describePlanarFormat(format) {
10
+ switch (format) {
11
+ case 'I420':
12
+ return planarDescriptor(8, false, 2, 2);
13
+ case 'I420P10':
14
+ return planarDescriptor(10, false, 2, 2);
15
+ case 'I420P12':
16
+ return planarDescriptor(12, false, 2, 2);
17
+ case 'I420A':
18
+ return planarDescriptor(8, true, 2, 2);
19
+ case 'I420AP10':
20
+ return planarDescriptor(10, true, 2, 2);
21
+ case 'I420AP12':
22
+ return planarDescriptor(12, true, 2, 2);
23
+ case 'I422':
24
+ return planarDescriptor(8, false, 2, 1);
25
+ case 'I422P10':
26
+ return planarDescriptor(10, false, 2, 1);
27
+ case 'I422P12':
28
+ return planarDescriptor(12, false, 2, 1);
29
+ case 'I422A':
30
+ return planarDescriptor(8, true, 2, 1);
31
+ case 'I422AP10':
32
+ return planarDescriptor(10, true, 2, 1);
33
+ case 'I422AP12':
34
+ return planarDescriptor(12, true, 2, 1);
35
+ case 'I444':
36
+ return planarDescriptor(8, false, 1, 1);
37
+ case 'I444P10':
38
+ return planarDescriptor(10, false, 1, 1);
39
+ case 'I444P12':
40
+ return planarDescriptor(12, false, 1, 1);
41
+ case 'I444A':
42
+ return planarDescriptor(8, true, 1, 1);
43
+ case 'I444AP10':
44
+ return planarDescriptor(10, true, 1, 1);
45
+ case 'I444AP12':
46
+ return planarDescriptor(12, true, 1, 1);
47
+ default:
48
+ return null;
49
+ }
50
+ }
51
+ export function chromaSubsamplingFor(descriptor) {
52
+ const chroma = descriptor.planes[1];
53
+ if (chroma.subsampleX === 2 && chroma.subsampleY === 2)
54
+ return '420';
55
+ if (chroma.subsampleX === 2 && chroma.subsampleY === 1)
56
+ return '422';
57
+ if (chroma.subsampleX === 1 && chroma.subsampleY === 1)
58
+ return '444';
59
+ throw new Error(`Unsupported planar chroma layout ${chroma.subsampleX}:${chroma.subsampleY}`);
60
+ }
61
+ export function bitDepthFor(descriptor) {
62
+ return descriptor.bitDepth;
63
+ }
64
+ export function planarFormatFor(chromaSubsampling, bitDepth, hasAlpha) {
65
+ const base = chromaSubsampling === '420' ? 'I420' : chromaSubsampling === '422' ? 'I422' : 'I444';
66
+ const alpha = hasAlpha ? 'A' : '';
67
+ const suffix = bitDepth === 8 ? '' : `P${bitDepth}`;
68
+ return `${base}${alpha}${suffix}`;
69
+ }
70
+ function planarDescriptor(bitDepth, hasAlpha, chromaSubsampleX, chromaSubsampleY) {
71
+ return {
72
+ bytesPerSample: bitDepth === 8 ? 1 : 2,
73
+ bitDepth,
74
+ hasAlpha,
75
+ planes: [
76
+ { subsampleX: 1, subsampleY: 1 },
77
+ { subsampleX: chromaSubsampleX, subsampleY: chromaSubsampleY },
78
+ { subsampleX: chromaSubsampleX, subsampleY: chromaSubsampleY },
79
+ ...(hasAlpha ? [{ subsampleX: 1, subsampleY: 1 }] : []),
80
+ ],
81
+ };
82
+ }
83
+ //# sourceMappingURL=formats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,uBAAuB,CAAC,KAAiB;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,MAAM,KAAK,MAAM;WACnB,MAAM,KAAK,MAAM;WACjB,oBAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkC;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkC;IAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,iBAA0C,EAAE,QAAwB,EAAE,QAAiB;IACrH,MAAM,IAAI,GAAG,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;IACpD,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAwB,EACxB,QAAiB,EACjB,gBAAwB,EACxB,gBAAwB;IAExB,OAAO;QACL,cAAc,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,QAAQ;QACR,QAAQ;QACR,MAAM,EAAE;YACN,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;YAChC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE;YAC9D,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE;YAC9D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { type PlanarBitDepth, type PlanarChromaSubsampling } from './formats.js';
2
+ export * from './formats.js';
1
3
  export type FrameColorInspection = {
2
4
  format: VideoPixelFormat | null;
3
5
  codedWidth: number;
@@ -51,18 +53,24 @@ export type CanvasSdrResult = {
51
53
  inspection: FrameColorInspection;
52
54
  colorSpace: PredefinedColorSpace;
53
55
  };
54
- export type ResizeRawOptions = {
56
+ export type PlanarResizeAlgorithm = 'nearest' | 'bilinear';
57
+ export type ResizeFramePlanarOptions = {
55
58
  width: number;
56
59
  height: number;
57
- algorithm?: 'nearest' | 'bilinear';
60
+ chromaSubsampling?: PlanarChromaSubsampling;
61
+ bitDepth?: PlanarBitDepth;
62
+ algorithm?: PlanarResizeAlgorithm;
58
63
  };
59
- export type ResizeRawResult = {
64
+ export type ResizeFramePlanarResult = {
60
65
  frame: VideoFrame;
61
66
  inspection: FrameColorInspection;
67
+ sourceFormat: string;
62
68
  format: string;
63
69
  layout: PlaneLayout[];
64
70
  byteLength: number;
65
- algorithm: 'nearest' | 'bilinear';
71
+ chromaSubsampling: PlanarChromaSubsampling;
72
+ bitDepth: PlanarBitDepth;
73
+ algorithm: PlanarResizeAlgorithm;
66
74
  };
67
75
  export declare function decodeImageToVideoFrame(data: Uint8Array, type: string, options?: {
68
76
  colorSpaceConversion?: ColorSpaceConversion;
@@ -77,6 +85,6 @@ export declare function copyFrameToRgba(frame: VideoFrame, options?: {
77
85
  }): Promise<RgbaCopyResult>;
78
86
  export declare function resizeFrameWithCanvas(frame: VideoFrame, options: ResizeCanvasOptions): ResizeCanvasResult;
79
87
  export declare function convertFrameToCanvasSdr(frame: VideoFrame): CanvasSdrResult;
80
- export declare function resizeFrameRaw(frame: VideoFrame, options: ResizeRawOptions): Promise<ResizeRawResult>;
88
+ export declare function resizeFramePlanar(frame: VideoFrame, options: ResizeFramePlanarOptions): Promise<ResizeFramePlanarResult>;
81
89
  export declare function sdrVideoColorSpaceInit(): VideoColorSpaceInit;
82
90
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { copyArrayBuffer } from '@browser-mc/binary';
2
+ import { bitDepthFor, chromaSubsamplingFor, describePlanarFormat, planarFormatFor, } from './formats.js';
3
+ export * from './formats.js';
2
4
  export async function decodeImageToVideoFrame(data, type, options = {}) {
3
5
  if (typeof ImageDecoder === 'undefined')
4
6
  throw new Error('ImageDecoder API is not available in this environment');
@@ -129,41 +131,54 @@ export function convertFrameToCanvasSdr(frame) {
129
131
  colorSpace: 'srgb',
130
132
  };
131
133
  }
132
- export async function resizeFrameRaw(frame, options) {
133
- const format = frame.format;
134
- if (!format)
135
- throw new Error('Cannot raw-resize a VideoFrame with unknown format');
136
- const descriptor = describePlanarFormat(format);
137
- if (!descriptor)
138
- throw new Error(`Raw resize does not support VideoFrame format ${format}`);
134
+ export async function resizeFramePlanar(frame, options) {
135
+ const sourceFormat = frame.format;
136
+ if (!sourceFormat)
137
+ throw new Error('Cannot process a VideoFrame with unknown format');
138
+ const sourceDescriptor = describePlanarFormat(sourceFormat);
139
+ if (!sourceDescriptor)
140
+ throw new Error(`Planar processing does not support VideoFrame format ${sourceFormat}`);
141
+ if (sourceDescriptor.planes.length !== 3 && sourceDescriptor.planes.length !== 4) {
142
+ throw new Error(`Planar processing currently supports 3-plane YUV and 4-plane YUVA formats, got ${sourceFormat}`);
143
+ }
144
+ const chromaSubsampling = options.chromaSubsampling ?? chromaSubsamplingFor(sourceDescriptor);
145
+ const bitDepth = options.bitDepth ?? bitDepthFor(sourceDescriptor);
146
+ const destinationFormat = planarFormatFor(chromaSubsampling, bitDepth, sourceDescriptor.hasAlpha);
147
+ if (!destinationFormat)
148
+ throw new Error(`No WebCodecs planar format is known for ${chromaSubsampling}/${bitDepth}`);
149
+ const destinationDescriptor = describePlanarFormat(destinationFormat);
150
+ if (!destinationDescriptor)
151
+ throw new Error(`Planar conversion does not support destination format ${destinationFormat}`);
152
+ assertCanConvertChroma(sourceDescriptor, destinationDescriptor, sourceFormat, destinationFormat);
139
153
  const sourceRect = visibleRectForCopy(frame);
140
154
  const source = new Uint8Array(frame.allocationSize({ rect: sourceRect }));
141
155
  const sourceLayout = await frame.copyTo(source, { rect: sourceRect });
142
- const destinationLayout = makeDestinationLayout(descriptor, options.width, options.height);
143
- const destination = new Uint8Array(allocationFromLayout(destinationLayout, descriptor, options.width, options.height));
156
+ const destinationLayout = makeDestinationLayout(destinationDescriptor, options.width, options.height);
157
+ const destination = new Uint8Array(allocationFromLayout(destinationLayout, destinationDescriptor, options.width, options.height));
144
158
  const algorithm = options.algorithm ?? 'bilinear';
145
- for (let planeIndex = 0; planeIndex < descriptor.planes.length; planeIndex++) {
146
- const plane = descriptor.planes[planeIndex];
147
- const srcWidth = planeDimension(sourceRect.width, plane.subsampleX);
148
- const srcHeight = planeDimension(sourceRect.height, plane.subsampleY);
149
- const dstWidth = planeDimension(options.width, plane.subsampleX);
150
- const dstHeight = planeDimension(options.height, plane.subsampleY);
151
- resizePlane({
159
+ for (let planeIndex = 0; planeIndex < sourceDescriptor.planes.length; planeIndex++) {
160
+ const sourcePlane = sourceDescriptor.planes[planeIndex];
161
+ const destinationPlane = destinationDescriptor.planes[planeIndex];
162
+ convertPlane({
152
163
  source,
153
164
  destination,
154
165
  sourceLayout: sourceLayout[planeIndex],
155
166
  destinationLayout: destinationLayout[planeIndex],
156
- sourceWidth: srcWidth,
157
- sourceHeight: srcHeight,
158
- destinationWidth: dstWidth,
159
- destinationHeight: dstHeight,
160
- bytesPerSample: descriptor.bytesPerSample,
161
- samplesPerPixel: plane.samplesPerPixel ?? 1,
167
+ sourceWidth: planeDimension(sourceRect.width, sourcePlane.subsampleX),
168
+ sourceHeight: planeDimension(sourceRect.height, sourcePlane.subsampleY),
169
+ destinationWidth: planeDimension(options.width, destinationPlane.subsampleX),
170
+ destinationHeight: planeDimension(options.height, destinationPlane.subsampleY),
171
+ sourceBytesPerSample: sourceDescriptor.bytesPerSample,
172
+ destinationBytesPerSample: destinationDescriptor.bytesPerSample,
173
+ sourceBitDepth: sourceDescriptor.bitDepth,
174
+ destinationBitDepth: destinationDescriptor.bitDepth,
175
+ sourceSamplesPerPixel: sourcePlane.samplesPerPixel ?? 1,
176
+ destinationSamplesPerPixel: destinationPlane.samplesPerPixel ?? 1,
162
177
  algorithm,
163
178
  });
164
179
  }
165
180
  const init = {
166
- format: format,
181
+ format: destinationFormat,
167
182
  codedWidth: options.width,
168
183
  codedHeight: options.height,
169
184
  displayWidth: options.width,
@@ -174,36 +189,19 @@ export async function resizeFrameRaw(frame, options) {
174
189
  };
175
190
  if (frame.duration !== null)
176
191
  init.duration = frame.duration;
177
- const resized = new VideoFrame(destination, init);
192
+ const converted = new VideoFrame(destination, init);
178
193
  return {
179
- frame: resized,
180
- inspection: inspectFrame(resized),
181
- format,
194
+ frame: converted,
195
+ inspection: inspectFrame(converted),
196
+ sourceFormat,
197
+ format: destinationFormat,
182
198
  layout: destinationLayout,
183
199
  byteLength: destination.byteLength,
200
+ chromaSubsampling,
201
+ bitDepth,
184
202
  algorithm,
185
203
  };
186
204
  }
187
- function describePlanarFormat(format) {
188
- switch (format) {
189
- case 'NV12':
190
- return { bytesPerSample: 1, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 2, subsampleY: 2, samplesPerPixel: 2 }] };
191
- case 'I420':
192
- return { bytesPerSample: 1, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 2, subsampleY: 2 }, { subsampleX: 2, subsampleY: 2 }] };
193
- case 'I422':
194
- return { bytesPerSample: 1, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 2, subsampleY: 1 }, { subsampleX: 2, subsampleY: 1 }] };
195
- case 'I444':
196
- return { bytesPerSample: 1, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 1, subsampleY: 1 }, { subsampleX: 1, subsampleY: 1 }] };
197
- case 'I420P10':
198
- return { bytesPerSample: 2, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 2, subsampleY: 2 }, { subsampleX: 2, subsampleY: 2 }] };
199
- case 'I422P10':
200
- return { bytesPerSample: 2, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 2, subsampleY: 1 }, { subsampleX: 2, subsampleY: 1 }] };
201
- case 'I444P10':
202
- return { bytesPerSample: 2, planes: [{ subsampleX: 1, subsampleY: 1 }, { subsampleX: 1, subsampleY: 1 }, { subsampleX: 1, subsampleY: 1 }] };
203
- default:
204
- return null;
205
- }
206
- }
207
205
  function visibleRectForCopy(frame) {
208
206
  const rect = frame.visibleRect;
209
207
  return {
@@ -232,24 +230,6 @@ function allocationFromLayout(layout, descriptor, width, height) {
232
230
  function planeDimension(size, subsample) {
233
231
  return Math.ceil(size / subsample);
234
232
  }
235
- function resizePlane(options) {
236
- for (let y = 0; y < options.destinationHeight; y++) {
237
- const sourceY = mapPixelCenter(y, options.destinationHeight, options.sourceHeight);
238
- for (let x = 0; x < options.destinationWidth; x++) {
239
- const sourceX = mapPixelCenter(x, options.destinationWidth, options.sourceWidth);
240
- const value = options.algorithm === 'nearest'
241
- ? sampleNearest(options, sourceX, sourceY, 0)
242
- : sampleBilinear(options, sourceX, sourceY, 0);
243
- writeSample(options.destination, options.destinationLayout, x, y, options.bytesPerSample, options.samplesPerPixel, 0, value);
244
- if (options.samplesPerPixel === 2) {
245
- const secondValue = options.algorithm === 'nearest'
246
- ? sampleNearest(options, sourceX, sourceY, 1)
247
- : sampleBilinear(options, sourceX, sourceY, 1);
248
- writeSample(options.destination, options.destinationLayout, x, y, options.bytesPerSample, options.samplesPerPixel, 1, secondValue);
249
- }
250
- }
251
- }
252
- }
253
233
  function mapPixelCenter(position, destinationSize, sourceSize) {
254
234
  return (position + 0.5) * sourceSize / destinationSize - 0.5;
255
235
  }
@@ -282,6 +262,71 @@ function writeSample(data, layout, x, y, bytesPerSample, samplesPerPixel, compon
282
262
  if (bytesPerSample === 2)
283
263
  data[offset + 1] = value >> 8;
284
264
  }
265
+ function convertPlane(options) {
266
+ if (options.sourceSamplesPerPixel !== options.destinationSamplesPerPixel) {
267
+ throw new Error('Planar conversion does not support packed-to-planar or planar-to-packed conversion');
268
+ }
269
+ for (let y = 0; y < options.destinationHeight; y++) {
270
+ const sourceY = mapPixelCenter(y, options.destinationHeight, options.sourceHeight);
271
+ for (let x = 0; x < options.destinationWidth; x++) {
272
+ const sourceX = mapPixelCenter(x, options.destinationWidth, options.sourceWidth);
273
+ for (let component = 0; component < options.destinationSamplesPerPixel; component++) {
274
+ const value = options.algorithm === 'nearest'
275
+ ? sampleNearest({
276
+ source: options.source,
277
+ sourceLayout: options.sourceLayout,
278
+ sourceWidth: options.sourceWidth,
279
+ sourceHeight: options.sourceHeight,
280
+ destinationLayout: options.destinationLayout,
281
+ destinationWidth: options.destinationWidth,
282
+ destinationHeight: options.destinationHeight,
283
+ bytesPerSample: options.sourceBytesPerSample,
284
+ samplesPerPixel: options.sourceSamplesPerPixel,
285
+ algorithm: options.algorithm,
286
+ }, sourceX, sourceY, component)
287
+ : sampleBilinear({
288
+ source: options.source,
289
+ sourceLayout: options.sourceLayout,
290
+ sourceWidth: options.sourceWidth,
291
+ sourceHeight: options.sourceHeight,
292
+ destinationLayout: options.destinationLayout,
293
+ destinationWidth: options.destinationWidth,
294
+ destinationHeight: options.destinationHeight,
295
+ bytesPerSample: options.sourceBytesPerSample,
296
+ samplesPerPixel: options.sourceSamplesPerPixel,
297
+ algorithm: options.algorithm,
298
+ }, sourceX, sourceY, component);
299
+ writeSample(options.destination, options.destinationLayout, x, y, options.destinationBytesPerSample, options.destinationSamplesPerPixel, component, convertSampleBitDepth(value, options.sourceBitDepth, options.destinationBitDepth));
300
+ }
301
+ }
302
+ }
303
+ }
304
+ function convertSampleBitDepth(value, sourceBitDepth, destinationBitDepth) {
305
+ const sourceMax = maxSampleValue(sourceBitDepth);
306
+ const destinationMax = maxSampleValue(destinationBitDepth);
307
+ return Math.round(clamp(value, 0, sourceMax) * destinationMax / sourceMax);
308
+ }
309
+ function maxSampleValue(bitDepth) {
310
+ return 2 ** bitDepth - 1;
311
+ }
312
+ function assertCanConvertChroma(source, destination, sourceFormat, destinationFormat) {
313
+ if (source.planes.length !== destination.planes.length) {
314
+ throw new Error(`Cannot convert ${sourceFormat} to incompatible planar format ${destinationFormat}`);
315
+ }
316
+ if (source.hasAlpha !== destination.hasAlpha) {
317
+ throw new Error(`Cannot add or remove alpha while converting ${sourceFormat} to ${destinationFormat}`);
318
+ }
319
+ for (let index = 0; index < source.planes.length; index++) {
320
+ const sourcePlane = source.planes[index];
321
+ const destinationPlane = destination.planes[index];
322
+ if ((sourcePlane.samplesPerPixel ?? 1) !== (destinationPlane.samplesPerPixel ?? 1)) {
323
+ throw new Error(`Cannot convert ${sourceFormat} to incompatible planar format ${destinationFormat}`);
324
+ }
325
+ if (destinationPlane.subsampleX < sourcePlane.subsampleX || destinationPlane.subsampleY < sourcePlane.subsampleY) {
326
+ throw new Error(`Planar conversion can downsample chroma but cannot upsample ${sourceFormat} to ${destinationFormat}`);
327
+ }
328
+ }
329
+ }
285
330
  function clamp(value, min, max) {
286
331
  return Math.min(max, Math.max(min, value));
287
332
  }
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,9 +1,14 @@
1
1
  {
2
2
  "name": "@browser-mc/webcodecs-color",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/tamaina/browser-media-converter",
10
+ "directory": "packages/webcodecs-color"
11
+ },
7
12
  "exports": {
8
13
  ".": {
9
14
  "types": "./dist/index.d.ts",
@@ -21,10 +26,10 @@
21
26
  "access": "public"
22
27
  },
23
28
  "scripts": {
24
- "prebuild": "pnpm --filter @browser-mc/binary build",
25
- "build": "tsc -p tsconfig.json",
26
- "pretypecheck": "pnpm --filter @browser-mc/binary build",
27
- "typecheck": "tsc -p tsconfig.json --noEmit",
29
+ "build": "pnpm --filter @browser-mc/webcodecs-color... build:package",
30
+ "build:package": "tsc -p tsconfig.json",
31
+ "typecheck": "pnpm --filter @browser-mc/webcodecs-color... typecheck:package",
32
+ "typecheck:package": "tsc -p tsconfig.json --noEmit",
28
33
  "test": "pnpm build",
29
34
  "test:electron": "pnpm build && env -u ELECTRON_RUN_AS_NODE xvfb-run -a node test/electron-smoke.mjs"
30
35
  }