webcodecs-node 0.7.1 → 0.7.5

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.
Files changed (105) hide show
  1. package/README.md +94 -12
  2. package/dist/config/ffmpeg-quality.d.ts +10 -1
  3. package/dist/config/ffmpeg-quality.d.ts.map +1 -1
  4. package/dist/config/ffmpeg-quality.js +12 -38
  5. package/dist/config/ffmpeg-quality.js.map +1 -1
  6. package/dist/config/webcodecs-config.d.ts +58 -0
  7. package/dist/config/webcodecs-config.d.ts.map +1 -0
  8. package/dist/config/webcodecs-config.js +187 -0
  9. package/dist/config/webcodecs-config.js.map +1 -0
  10. package/dist/containers/Demuxer.d.ts +3 -1
  11. package/dist/containers/Demuxer.d.ts.map +1 -1
  12. package/dist/containers/Demuxer.js +26 -19
  13. package/dist/containers/Demuxer.js.map +1 -1
  14. package/dist/containers/FFmpegMuxer.d.ts +42 -0
  15. package/dist/containers/FFmpegMuxer.d.ts.map +1 -0
  16. package/dist/containers/FFmpegMuxer.js +311 -0
  17. package/dist/containers/FFmpegMuxer.js.map +1 -0
  18. package/dist/containers/FFmpegSpawnMuxer.d.ts +42 -0
  19. package/dist/containers/FFmpegSpawnMuxer.d.ts.map +1 -0
  20. package/dist/containers/FFmpegSpawnMuxer.js +311 -0
  21. package/dist/containers/FFmpegSpawnMuxer.js.map +1 -0
  22. package/dist/containers/FallbackMuxer.d.ts +42 -0
  23. package/dist/containers/FallbackMuxer.d.ts.map +1 -0
  24. package/dist/containers/FallbackMuxer.js +311 -0
  25. package/dist/containers/FallbackMuxer.js.map +1 -0
  26. package/dist/containers/Muxer.d.ts +75 -107
  27. package/dist/containers/Muxer.d.ts.map +1 -1
  28. package/dist/containers/Muxer.js +184 -243
  29. package/dist/containers/Muxer.js.map +1 -1
  30. package/dist/containers/MuxerWithFallback.d.ts +110 -0
  31. package/dist/containers/MuxerWithFallback.d.ts.map +1 -0
  32. package/dist/containers/MuxerWithFallback.js +239 -0
  33. package/dist/containers/MuxerWithFallback.js.map +1 -0
  34. package/dist/containers/NodeAvMuxer.d.ts +118 -0
  35. package/dist/containers/NodeAvMuxer.d.ts.map +1 -0
  36. package/dist/containers/NodeAvMuxer.js +338 -0
  37. package/dist/containers/NodeAvMuxer.js.map +1 -0
  38. package/dist/containers/extract.d.ts.map +1 -1
  39. package/dist/containers/extract.js +3 -1
  40. package/dist/containers/extract.js.map +1 -1
  41. package/dist/containers/index.d.ts +20 -14
  42. package/dist/containers/index.d.ts.map +1 -1
  43. package/dist/containers/index.js +21 -14
  44. package/dist/containers/index.js.map +1 -1
  45. package/dist/containers/muxer-types.d.ts +117 -0
  46. package/dist/containers/muxer-types.d.ts.map +1 -0
  47. package/dist/containers/muxer-types.js +45 -0
  48. package/dist/containers/muxer-types.js.map +1 -0
  49. package/dist/containers/transcode.d.ts.map +1 -1
  50. package/dist/containers/transcode.js +171 -150
  51. package/dist/containers/transcode.js.map +1 -1
  52. package/dist/core/VideoFrame.d.ts +19 -0
  53. package/dist/core/VideoFrame.d.ts.map +1 -1
  54. package/dist/core/VideoFrame.js +11 -0
  55. package/dist/core/VideoFrame.js.map +1 -1
  56. package/dist/decoders/VideoDecoder.d.ts +1 -0
  57. package/dist/decoders/VideoDecoder.d.ts.map +1 -1
  58. package/dist/decoders/VideoDecoder.js +6 -4
  59. package/dist/decoders/VideoDecoder.js.map +1 -1
  60. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts +10 -0
  61. package/dist/demos/demo-audio-visualizer-mediabunny.d.ts.map +1 -0
  62. package/dist/demos/demo-audio-visualizer-mediabunny.js +357 -0
  63. package/dist/demos/demo-audio-visualizer-mediabunny.js.map +1 -0
  64. package/dist/demos/demo-audio-visualizer-nodeav.d.ts +10 -0
  65. package/dist/demos/demo-audio-visualizer-nodeav.d.ts.map +1 -0
  66. package/dist/demos/demo-audio-visualizer-nodeav.js +318 -0
  67. package/dist/demos/demo-audio-visualizer-nodeav.js.map +1 -0
  68. package/dist/demos/demo-muxer-fallback.d.ts +8 -0
  69. package/dist/demos/demo-muxer-fallback.d.ts.map +1 -0
  70. package/dist/demos/demo-muxer-fallback.js +165 -0
  71. package/dist/demos/demo-muxer-fallback.js.map +1 -0
  72. package/dist/encoders/AudioEncoder.d.ts +2 -0
  73. package/dist/encoders/AudioEncoder.d.ts.map +1 -1
  74. package/dist/encoders/AudioEncoder.js +7 -4
  75. package/dist/encoders/AudioEncoder.js.map +1 -1
  76. package/dist/hardware/decoder-args.d.ts.map +1 -1
  77. package/dist/hardware/decoder-args.js +35 -14
  78. package/dist/hardware/decoder-args.js.map +1 -1
  79. package/dist/hardware/detection.d.ts.map +1 -1
  80. package/dist/hardware/detection.js +39 -0
  81. package/dist/hardware/detection.js.map +1 -1
  82. package/dist/hardware/encoder-args.d.ts.map +1 -1
  83. package/dist/hardware/encoder-args.js +43 -5
  84. package/dist/hardware/encoder-args.js.map +1 -1
  85. package/dist/hardware/types.d.ts.map +1 -1
  86. package/dist/hardware/types.js +30 -28
  87. package/dist/hardware/types.js.map +1 -1
  88. package/dist/node-av/NodeAvVideoEncoder.d.ts +5 -0
  89. package/dist/node-av/NodeAvVideoEncoder.d.ts.map +1 -1
  90. package/dist/node-av/NodeAvVideoEncoder.js +76 -23
  91. package/dist/node-av/NodeAvVideoEncoder.js.map +1 -1
  92. package/dist/utils/avc.d.ts +2 -0
  93. package/dist/utils/avc.d.ts.map +1 -1
  94. package/dist/utils/avc.js +36 -8
  95. package/dist/utils/avc.js.map +1 -1
  96. package/dist/utils/codec-validation.d.ts.map +1 -1
  97. package/dist/utils/codec-validation.js +12 -6
  98. package/dist/utils/codec-validation.js.map +1 -1
  99. package/dist/utils/hevc.d.ts +2 -0
  100. package/dist/utils/hevc.d.ts.map +1 -1
  101. package/dist/utils/hevc.js +42 -8
  102. package/dist/utils/hevc.js.map +1 -1
  103. package/docs/api.md +52 -2
  104. package/docs/configuration.md +10 -7
  105. package/package.json +1 -1
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Shared types and interfaces for muxers
3
+ *
4
+ * This module defines common interfaces that both NodeAvMuxer and FFmpegSpawnMuxer
5
+ * implement, enabling a clean fallback mechanism.
6
+ */
7
+ /**
8
+ * Muxer error with additional context
9
+ */
10
+ export class MuxerError extends Error {
11
+ backend;
12
+ operation;
13
+ cause;
14
+ constructor(message, backend, operation, cause) {
15
+ super(message);
16
+ this.backend = backend;
17
+ this.operation = operation;
18
+ this.cause = cause;
19
+ this.name = 'MuxerError';
20
+ }
21
+ }
22
+ /**
23
+ * Infer container format from file extension
24
+ */
25
+ export function inferFormat(path) {
26
+ const ext = path.split('.').pop()?.toLowerCase();
27
+ switch (ext) {
28
+ case 'mp4':
29
+ case 'm4v':
30
+ return 'mp4';
31
+ case 'webm':
32
+ return 'webm';
33
+ case 'mkv':
34
+ return 'matroska';
35
+ case 'mov':
36
+ return 'mov';
37
+ case 'avi':
38
+ return 'avi';
39
+ case 'ts':
40
+ return 'mpegts';
41
+ default:
42
+ return 'mp4';
43
+ }
44
+ }
45
+ //# sourceMappingURL=muxer-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"muxer-types.js","sourceRoot":"","sources":["../../src/containers/muxer-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgHH;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IACA;IACA;IAJlB,YACE,OAAe,EACC,OAAmC,EACnC,SAAkD,EAClD,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,YAAO,GAAP,OAAO,CAA4B;QACnC,cAAS,GAAT,SAAS,CAAyC;QAClD,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,UAAU,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transcode.d.ts","sourceRoot":"","sources":["../../src/containers/transcode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AA6GD;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAoW1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA6BxE;AAED;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"transcode.d.ts","sourceRoot":"","sources":["../../src/containers/transcode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAiSD;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA4P1B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CA6BxE;AAED;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -6,7 +6,10 @@
6
6
  */
7
7
  import { Demuxer as NodeAvDemuxer, Muxer as NodeAvMuxer, Decoder as NodeAvDecoder, Encoder as NodeAvEncoder, HardwareContext, FilterAPI, AV_CODEC_ID_H264, AV_CODEC_ID_HEVC, AV_CODEC_ID_VP8, AV_CODEC_ID_VP9, AV_CODEC_ID_AV1, AV_CODEC_ID_AAC, AV_CODEC_ID_OPUS, AV_CODEC_ID_MP3, AV_PIX_FMT_YUV420P, AV_PIX_FMT_NV12, } from 'node-av';
8
8
  import { Demuxer } from './Demuxer.js';
9
- import { StreamCopier } from './Muxer.js';
9
+ import { StreamCopier } from './NodeAvMuxer.js';
10
+ import { inferFormat } from './muxer-types.js';
11
+ import { Logger } from '../utils/logger.js';
12
+ const logger = new Logger('Transcode');
10
13
  /**
11
14
  * Map video codec string to FFmpeg codec ID
12
15
  */
@@ -41,6 +44,151 @@ function getAudioCodecId(codec) {
41
44
  return AV_CODEC_ID_AAC;
42
45
  }
43
46
  }
47
+ /**
48
+ * Try to create a hardware context for acceleration
49
+ * Returns null if hardware acceleration is not available
50
+ */
51
+ function tryCreateHardwareContext(preference) {
52
+ if (preference !== 'prefer-hardware') {
53
+ return null;
54
+ }
55
+ // Try hardware backends in order of reliability
56
+ // VAAPI tends to be more stable on Linux than QSV
57
+ const hwTypesToTry = ['vaapi', 'cuda', 'qsv', 'videotoolbox'];
58
+ for (const hwType of hwTypesToTry) {
59
+ try {
60
+ const hw = HardwareContext.create(hwType);
61
+ logger.info(`Using hardware acceleration: ${hw?.deviceTypeName}`);
62
+ return hw;
63
+ }
64
+ catch {
65
+ // Try next backend
66
+ }
67
+ }
68
+ // Fallback to auto-detection
69
+ try {
70
+ const hw = HardwareContext.auto();
71
+ logger.info(`Using hardware acceleration (auto): ${hw?.deviceTypeName}`);
72
+ return hw;
73
+ }
74
+ catch {
75
+ logger.info('Hardware acceleration not available, using software');
76
+ return null;
77
+ }
78
+ }
79
+ /**
80
+ * Create video decoder with optional hardware acceleration
81
+ */
82
+ async function createVideoDecoder(inputStream, hardware, codecName) {
83
+ try {
84
+ const decoder = await NodeAvDecoder.create(inputStream, {
85
+ hardware: hardware ?? undefined,
86
+ extraHwFrames: 64,
87
+ });
88
+ const isHardware = hardware !== null && decoder.isHardware?.();
89
+ if (isHardware) {
90
+ logger.info(`Using hardware decoder for ${codecName}`);
91
+ }
92
+ return { decoder, isHardware };
93
+ }
94
+ catch (err) {
95
+ logger.info(`Hardware decoder failed: ${err.message}, using software`);
96
+ const decoder = await NodeAvDecoder.create(inputStream);
97
+ return { decoder, isHardware: false };
98
+ }
99
+ }
100
+ /**
101
+ * Create video encoder with optional hardware acceleration
102
+ */
103
+ async function createVideoEncoder(codecId, codecName, hardware, config) {
104
+ let encoderCodec = codecId;
105
+ let pixelFormat = AV_PIX_FMT_YUV420P;
106
+ let isHardware = false;
107
+ // Try hardware encoder first
108
+ if (hardware) {
109
+ try {
110
+ const hwCodec = hardware.getEncoderCodec(codecName);
111
+ if (hwCodec) {
112
+ encoderCodec = hwCodec;
113
+ pixelFormat = AV_PIX_FMT_NV12;
114
+ isHardware = true;
115
+ logger.info(`Using hardware encoder for ${codecName}`);
116
+ }
117
+ }
118
+ catch {
119
+ // Fallback to software encoder
120
+ }
121
+ }
122
+ // Create encoder
123
+ try {
124
+ const encoder = await NodeAvEncoder.create(encoderCodec, {
125
+ width: config.width,
126
+ height: config.height,
127
+ pixelFormat,
128
+ timeBase: { num: 1, den: config.framerate },
129
+ frameRate: { num: config.framerate, den: 1 },
130
+ bitrate: config.bitrate,
131
+ gopSize: config.gopSize,
132
+ hardware: isHardware ? hardware ?? undefined : undefined,
133
+ extraHwFrames: 64,
134
+ });
135
+ return { encoder, pixelFormat, isHardware };
136
+ }
137
+ catch (err) {
138
+ if (!isHardware)
139
+ throw err;
140
+ // Fallback to software encoder
141
+ logger.info(`Hardware encoder failed: ${err.message}, using software`);
142
+ const encoder = await NodeAvEncoder.create(codecId, {
143
+ width: config.width,
144
+ height: config.height,
145
+ pixelFormat: AV_PIX_FMT_YUV420P,
146
+ timeBase: { num: 1, den: config.framerate },
147
+ frameRate: { num: config.framerate, den: 1 },
148
+ bitrate: config.bitrate,
149
+ gopSize: config.gopSize,
150
+ });
151
+ return { encoder, pixelFormat: AV_PIX_FMT_YUV420P, isHardware: false };
152
+ }
153
+ }
154
+ /**
155
+ * Create video filter for format conversion between decoder and encoder
156
+ */
157
+ function createVideoFilter(hardware, usingHardwareDecoder, usingHardwareEncoder, encoderPixelFormat) {
158
+ if (!usingHardwareDecoder && !usingHardwareEncoder) {
159
+ return null;
160
+ }
161
+ const filterChain = buildTranscodeFilterChain(hardware?.deviceTypeName || 'software', usingHardwareDecoder, usingHardwareEncoder, encoderPixelFormat === AV_PIX_FMT_NV12 ? 'nv12' : 'yuv420p');
162
+ if (!filterChain) {
163
+ return null;
164
+ }
165
+ try {
166
+ const filter = FilterAPI.create(filterChain, {
167
+ hardware: hardware ?? undefined,
168
+ });
169
+ logger.info(`Using filter chain: ${filterChain}`);
170
+ return filter;
171
+ }
172
+ catch (err) {
173
+ logger.info(`Filter chain failed, using simple format conversion: ${err.message}`);
174
+ return FilterAPI.create(`format=${encoderPixelFormat === AV_PIX_FMT_NV12 ? 'nv12' : 'yuv420p'}`);
175
+ }
176
+ }
177
+ /**
178
+ * Create audio transcoding pipeline
179
+ */
180
+ async function createAudioPipeline(inputStream, muxer, options) {
181
+ const cp = inputStream.codecpar;
182
+ const codecId = getAudioCodecId(options.audioCodec || 'aac');
183
+ const decoder = await NodeAvDecoder.create(inputStream);
184
+ const encoder = await NodeAvEncoder.create(codecId, {
185
+ sampleRate: options.sampleRate || cp.sampleRate,
186
+ channels: options.numberOfChannels || cp.channels,
187
+ bitrate: options.audioBitrate || 128_000,
188
+ });
189
+ const streamIndex = muxer.addStream(encoder);
190
+ return { decoder, encoder, streamIndex };
191
+ }
44
192
  /**
45
193
  * Build filter chain for transcoding based on hardware configuration
46
194
  * Handles: hardware frame download, format conversion, and optionally hardware upload
@@ -79,29 +227,6 @@ function buildTranscodeFilterChain(hwType, hwDecoder, hwEncoder, targetFormat) {
79
227
  // Case 4: Both software - no filter needed
80
228
  return null;
81
229
  }
82
- /**
83
- * Infer container format from file extension
84
- */
85
- function inferFormat(path) {
86
- const ext = path.split('.').pop()?.toLowerCase();
87
- switch (ext) {
88
- case 'mp4':
89
- case 'm4v':
90
- return 'mp4';
91
- case 'webm':
92
- return 'webm';
93
- case 'mkv':
94
- return 'matroska';
95
- case 'mov':
96
- return 'mov';
97
- case 'avi':
98
- return 'avi';
99
- case 'ts':
100
- return 'mpegts';
101
- default:
102
- return 'mp4';
103
- }
104
- }
105
230
  /**
106
231
  * Remux a file from one container format to another without re-encoding
107
232
  *
@@ -154,37 +279,10 @@ export async function transcode(inputPath, outputPath, options = {}) {
154
279
  throw new Error('No video or audio streams in input file');
155
280
  }
156
281
  // Setup hardware acceleration if requested
157
- const useHardware = options.hardwareAcceleration === 'prefer-hardware';
158
- let hardware = null;
282
+ const hardware = tryCreateHardwareContext(options.hardwareAcceleration || 'no-preference');
159
283
  let videoFilter = null;
160
284
  let usingHardwareDecoder = false;
161
285
  let usingHardwareEncoder = false;
162
- if (useHardware) {
163
- // Try hardware backends in order of reliability
164
- // VAAPI tends to be more stable on Linux than QSV
165
- const hwTypesToTry = ['vaapi', 'cuda', 'qsv', 'videotoolbox'];
166
- for (const hwType of hwTypesToTry) {
167
- try {
168
- hardware = HardwareContext.create(hwType);
169
- console.log(`Using hardware acceleration: ${hardware?.deviceTypeName}`);
170
- break;
171
- }
172
- catch {
173
- // Try next backend
174
- }
175
- }
176
- if (!hardware) {
177
- try {
178
- // Fallback to auto-detection
179
- hardware = HardwareContext.auto();
180
- console.log(`Using hardware acceleration (auto): ${hardware?.deviceTypeName}`);
181
- }
182
- catch {
183
- console.log('Hardware acceleration not available, using software');
184
- hardware = null;
185
- }
186
- }
187
- }
188
286
  // Create output muxer
189
287
  const format = options.format || inferFormat(outputPath);
190
288
  const muxer = await NodeAvMuxer.open(outputPath, { format });
@@ -200,92 +298,22 @@ export async function transcode(inputPath, outputPath, options = {}) {
200
298
  const outputHeight = options.height || cp.height;
201
299
  const outputCodecId = getVideoCodecId(options.videoCodec || 'h264');
202
300
  const codecName = options.videoCodec || 'h264';
203
- // Create decoder with hardware acceleration if available
204
- try {
205
- videoDecoder = await NodeAvDecoder.create(inputVideo, {
206
- hardware: hardware ?? undefined,
207
- extraHwFrames: 64, // Allocate extra frames for hardware decoding pipeline
208
- });
209
- usingHardwareDecoder = hardware !== null && videoDecoder.isHardware?.();
210
- if (usingHardwareDecoder) {
211
- console.log(`Using hardware decoder for ${codecName}`);
212
- }
213
- }
214
- catch (decErr) {
215
- // Fallback to software decoder
216
- console.log(`Hardware decoder failed: ${decErr.message}, using software`);
217
- videoDecoder = await NodeAvDecoder.create(inputVideo);
218
- }
219
- // Create encoder with hardware acceleration if available
220
- let encoderCodec = outputCodecId;
221
- let encoderPixelFormat = AV_PIX_FMT_YUV420P;
222
- if (hardware) {
223
- try {
224
- const hwCodec = hardware.getEncoderCodec(codecName);
225
- if (hwCodec) {
226
- encoderCodec = hwCodec;
227
- encoderPixelFormat = AV_PIX_FMT_NV12; // Hardware encoders typically use NV12
228
- usingHardwareEncoder = true;
229
- console.log(`Using hardware encoder for ${codecName}`);
230
- }
231
- }
232
- catch {
233
- // Fallback to software encoder
234
- }
235
- }
236
- // Create encoder
237
- try {
238
- videoEncoder = await NodeAvEncoder.create(encoderCodec, {
239
- width: outputWidth,
240
- height: outputHeight,
241
- pixelFormat: encoderPixelFormat,
242
- timeBase: { num: 1, den: options.framerate || 30 },
243
- frameRate: { num: options.framerate || 30, den: 1 },
244
- bitrate: options.videoBitrate || 1_000_000,
245
- gopSize: options.gopSize || 30,
246
- hardware: usingHardwareEncoder ? hardware ?? undefined : undefined,
247
- extraHwFrames: 64,
248
- });
249
- }
250
- catch (encErr) {
251
- // Fallback to software encoder if hardware fails
252
- if (usingHardwareEncoder) {
253
- console.log(`Hardware encoder failed: ${encErr.message}, using software`);
254
- usingHardwareEncoder = false;
255
- encoderPixelFormat = AV_PIX_FMT_YUV420P;
256
- videoEncoder = await NodeAvEncoder.create(outputCodecId, {
257
- width: outputWidth,
258
- height: outputHeight,
259
- pixelFormat: encoderPixelFormat,
260
- timeBase: { num: 1, den: options.framerate || 30 },
261
- frameRate: { num: options.framerate || 30, den: 1 },
262
- bitrate: options.videoBitrate || 1_000_000,
263
- gopSize: options.gopSize || 30,
264
- });
265
- }
266
- else {
267
- throw encErr;
268
- }
269
- }
270
- // Create video filter for format conversion between decoder and encoder
271
- // This handles: hardware frame download, format conversion, and optionally hardware upload
272
- // Created AFTER encoder is finalized to know the actual configuration
273
- if (usingHardwareDecoder || usingHardwareEncoder) {
274
- const filterChain = buildTranscodeFilterChain(hardware?.deviceTypeName || 'software', usingHardwareDecoder, usingHardwareEncoder, encoderPixelFormat === AV_PIX_FMT_NV12 ? 'nv12' : 'yuv420p');
275
- if (filterChain) {
276
- try {
277
- videoFilter = FilterAPI.create(filterChain, {
278
- hardware: hardware ?? undefined,
279
- });
280
- console.log(`Using filter chain: ${filterChain}`);
281
- }
282
- catch (err) {
283
- console.log(`Filter chain failed, using simple format conversion: ${err.message}`);
284
- // Fallback to simple format conversion
285
- videoFilter = FilterAPI.create(`format=${encoderPixelFormat === AV_PIX_FMT_NV12 ? 'nv12' : 'yuv420p'}`);
286
- }
287
- }
288
- }
301
+ // Create decoder with hardware acceleration
302
+ const decoderResult = await createVideoDecoder(inputVideo, hardware, codecName);
303
+ videoDecoder = decoderResult.decoder;
304
+ usingHardwareDecoder = decoderResult.isHardware;
305
+ // Create encoder with hardware acceleration
306
+ const encoderResult = await createVideoEncoder(outputCodecId, codecName, hardware, {
307
+ width: outputWidth,
308
+ height: outputHeight,
309
+ framerate: options.framerate || 30,
310
+ bitrate: options.videoBitrate || 1_000_000,
311
+ gopSize: options.gopSize || 30,
312
+ });
313
+ videoEncoder = encoderResult.encoder;
314
+ usingHardwareEncoder = encoderResult.isHardware;
315
+ // Create video filter for format conversion
316
+ videoFilter = createVideoFilter(hardware, usingHardwareDecoder, usingHardwareEncoder, encoderResult.pixelFormat);
289
317
  videoOutStreamIndex = muxer.addStream(videoEncoder);
290
318
  }
291
319
  else if (inputVideo && options.videoCodec === 'copy') {
@@ -298,17 +326,10 @@ export async function transcode(inputPath, outputPath, options = {}) {
298
326
  let audioOutStreamIndex = -1;
299
327
  let audioFrameCount = 0;
300
328
  if (inputAudio && options.audioCodec !== 'copy') {
301
- const cp = inputAudio.codecpar;
302
- const outputCodecId = getAudioCodecId(options.audioCodec || 'aac');
303
- // Create decoder
304
- audioDecoder = await NodeAvDecoder.create(inputAudio);
305
- // Create encoder
306
- audioEncoder = await NodeAvEncoder.create(outputCodecId, {
307
- sampleRate: options.sampleRate || cp.sampleRate,
308
- channels: options.numberOfChannels || cp.channels,
309
- bitrate: options.audioBitrate || 128_000,
310
- });
311
- audioOutStreamIndex = muxer.addStream(audioEncoder);
329
+ const audioPipeline = await createAudioPipeline(inputAudio, muxer, options);
330
+ audioDecoder = audioPipeline.decoder;
331
+ audioEncoder = audioPipeline.encoder;
332
+ audioOutStreamIndex = audioPipeline.streamIndex;
312
333
  }
313
334
  else if (inputAudio && options.audioCodec === 'copy') {
314
335
  // Stream copy audio
@@ -370,7 +391,7 @@ export async function transcode(inputPath, outputPath, options = {}) {
370
391
  }
371
392
  catch (filterErr) {
372
393
  // Filter failed, try to continue without it
373
- console.warn(`Filter processing failed: ${filterErr.message}`);
394
+ logger.warn(`Filter processing failed: ${filterErr.message}`);
374
395
  frame.free();
375
396
  continue;
376
397
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transcode.js","sourceRoot":"","sources":["../../src/containers/transcode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,EACpB,OAAO,IAAI,aAAa,EACxB,OAAO,IAAI,aAAa,EACxB,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAyE1C;;GAEG;AACH,SAAS,eAAe,CAAC,KAAiB;IACxC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;QAC1B,KAAK,KAAK;YACR,OAAO,eAAe,CAAC;QACzB,KAAK,KAAK;YACR,OAAO,eAAe,CAAC;QACzB,KAAK,KAAK;YACR,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAiB;IACxC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK;YACR,OAAO,eAAe,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;QAC1B,KAAK,KAAK;YACR,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,MAAc,EACd,SAAkB,EAClB,SAAkB,EAClB,YAAoB;IAEpB,6CAA6C;IAC7C,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,sBAAsB,YAAY,EAAE,CAAC;YAC9C,KAAK,MAAM;gBACT,OAAO,qBAAqB,YAAY,EAAE,CAAC;YAC7C,KAAK,KAAK;gBACR,OAAO,kBAAkB,YAAY,EAAE,CAAC;YAC1C,KAAK,cAAc;gBACjB,OAAO,mBAAmB,YAAY,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,iCAAiC,YAAY,EAAE,CAAC;IACzD,CAAC;IAED,qDAAqD;IACrD,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QAC5B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,sBAAsB,CAAC;YAChC,KAAK,MAAM;gBACT,OAAO,2BAA2B,CAAC;YACrC,KAAK,KAAK;gBACR,OAAO,yCAAyC,CAAC;YACnD,KAAK,cAAc;gBACjB,OAAO,sBAAsB,CAAC;QAClC,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,UAAU,CAAC;QACpB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,SAAiB,EAAE,UAAkB;IAC/D,MAAM,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,UAAkB,EAClB,UAA4B,EAAE;IAE9B,6BAA6B;IAC7B,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACnE,MAAM,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IAED,aAAa;IACb,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAEnC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,2CAA2C;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,KAAK,iBAAiB,CAAC;IACvE,IAAI,QAAQ,GAA2B,IAAI,CAAC;IAC5C,IAAI,WAAW,GAAqB,IAAI,CAAC;IACzC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,IAAI,WAAW,EAAE,CAAC;QAChB,gDAAgD;QAChD,kDAAkD;QAClD,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC9D,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,MAAa,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,gCAAgC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxE,MAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,6BAA6B;gBAC7B,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,uCAAuC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;gBACnE,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE7D,uBAAuB;IACvB,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC;QACjD,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;QAE/C,yDAAyD;QACzD,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE;gBACpD,QAAQ,EAAE,QAAQ,IAAI,SAAS;gBAC/B,aAAa,EAAE,EAAE,EAAE,uDAAuD;aACpE,CAAC,CAAC;YACV,oBAAoB,GAAG,QAAQ,KAAK,IAAI,IAAI,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YACxE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,+BAA+B;YAC/B,OAAO,CAAC,GAAG,CAAC,4BAA6B,MAAgB,CAAC,OAAO,kBAAkB,CAAC,CAAC;YACrF,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC;QAED,yDAAyD;QACzD,IAAI,YAAY,GAAQ,aAAa,CAAC;QACtC,IAAI,kBAAkB,GAAG,kBAAkB,CAAC;QAE5C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAgB,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE,CAAC;oBACZ,YAAY,GAAG,OAAO,CAAC;oBACvB,kBAAkB,GAAG,eAAe,CAAC,CAAC,uCAAuC;oBAC7E,oBAAoB,GAAG,IAAI,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE;gBACtD,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,kBAAkB;gBAC/B,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE;gBAClD,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnD,OAAO,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;gBAC9B,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;gBAClE,aAAa,EAAE,EAAE;aACX,CAAC,CAAC;QACZ,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,iDAAiD;YACjD,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,4BAA6B,MAAgB,CAAC,OAAO,kBAAkB,CAAC,CAAC;gBACrF,oBAAoB,GAAG,KAAK,CAAC;gBAC7B,kBAAkB,GAAG,kBAAkB,CAAC;gBACxC,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,aAAoB,EAAE;oBAC9D,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,kBAAkB;oBAC/B,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE;oBAClD,SAAS,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;oBACnD,OAAO,EAAE,OAAO,CAAC,YAAY,IAAI,SAAS;oBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;iBACxB,CAAC,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,2FAA2F;QAC3F,sEAAsE;QACtE,IAAI,oBAAoB,IAAI,oBAAoB,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,yBAAyB,CAC3C,QAAQ,EAAE,cAAc,IAAI,UAAU,EACtC,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAC5D,CAAC;YAEF,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE;wBAC1C,QAAQ,EAAE,QAAQ,IAAI,SAAS;qBACzB,CAAC,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,wDAAyD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC9F,uCAAuC;oBACvC,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,kBAAkB,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1G,CAAC;YACH,CAAC;QACH,CAAC;QAED,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACvD,oBAAoB;QACpB,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC/B,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;QAEnE,iBAAiB;QACjB,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtD,iBAAiB;QACjB,YAAY,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,aAAoB,EAAE;YAC9D,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU;YAC/C,QAAQ,EAAE,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,QAAQ;YACjD,OAAO,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO;SAClC,CAAC,CAAC;QAEV,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACvD,oBAAoB;QACpB,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC;IAClC,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;oBAClD,gBAAgB,EAAE,CAAC;gBACrB,CAAC;;oBAAM,MAAM;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBACpD,CAAC;;oBAAM,MAAM;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO;QAC3C,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK;oBAAE,MAAM;gBAElB,mFAAmF;gBACnF,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACjC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACb,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;wBACpC,IAAI,CAAC,KAAK;4BAAE,SAAS;oBACvB,CAAC;oBAAC,OAAO,SAAS,EAAE,CAAC;wBACnB,4CAA4C;wBAC5C,OAAO,CAAC,IAAI,CAAC,6BAA8B,SAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC1E,KAAK,CAAC,IAAI,EAAE,CAAC;wBACb,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;gBACpC,eAAe,EAAE,CAAC;gBAClB,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,iBAAiB,EAAE,CAAC;gBAE1B,kBAAkB;gBAClB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACvC,OAAO,CAAC,UAAU,CAAC;wBACjB,WAAW,EAAE,eAAe;wBAC5B,WAAW,EAAE,eAAe;wBAC5B,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;qBACvE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,UAAU,iBAAiB;QAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY;YAAE,OAAO;QAC3C,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK;oBAAE,MAAM;gBAClB,eAAe,EAAE,CAAC;gBAClB,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,iBAAiB,EAAE,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,KAAK,EAAE,CAAC;YAC7C,IAAI,YAAY,IAAI,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1D,kBAAkB;gBAClB,IAAI,CAAC;oBACH,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,iBAAiB,EAAE,CAAC;gBAC5B,CAAC;gBAAC,OAAO,SAAS,EAAE,CAAC;oBACnB,8DAA8D;oBAC9D,MAAM,MAAM,GAAI,SAAmB,CAAC,OAAO,CAAC;oBAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC5F,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,oDAAoD,CAAC,CAAC;oBAC3G,CAAC;oBACD,MAAM,SAAS,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;gBACpC,oBAAoB;gBACpB,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBACrD,gBAAgB,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,KAAK,EAAE,CAAC;YACpD,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;gBACjC,kBAAkB;gBAClB,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,iBAAiB,EAAE,CAAC;YAC5B,CAAC;iBAAM,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;gBACpC,oBAAoB;gBACpB,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,WAAW;QAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACrC,IAAI,YAAY;QAAE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7C,IAAI,YAAY;QAAE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7C,IAAI,YAAY;QAAE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7C,IAAI,YAAY;QAAE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7C,IAAI,QAAQ;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IAEpB,uBAAuB;IACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpC,OAAO;QACL,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,eAAe;QAC5B,UAAU,EAAE,IAAI,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAoBD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,MAAM,IAAI,GAAc;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;KAChC,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,KAAK,EAAE,WAAW,CAAC,UAAU;YAC7B,MAAM,EAAE,WAAW,CAAC,WAAW;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,QAAQ,EAAE,WAAW,CAAC,gBAAgB;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"transcode.js","sourceRoot":"","sources":["../../src/containers/transcode.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,17 @@ import { DOMRectReadOnly } from '../types/index.js';
7
7
  import { VideoColorSpace } from '../formats/index.js';
8
8
  import type { VideoPixelFormat, VideoFrameBufferInit, VideoFrameCopyToOptions, VideoFrameInit } from '../types/video.js';
9
9
  export type { VideoPixelFormat, VideoFrameBufferInit, VideoFrameCopyToOptions, VideoFrameInit };
10
+ /**
11
+ * VideoFrameMetadata interface per W3C WebCodecs spec
12
+ * https://w3c.github.io/webcodecs/video_frame_metadata_registry.html
13
+ *
14
+ * Note: This is a stub implementation. The full metadata registry includes:
15
+ * - rtpTimestamp: For WebRTC media synchronization
16
+ * - rotation: Frame orientation (0, 90, 180, 270)
17
+ * - flip: Whether to flip the frame
18
+ */
19
+ export interface VideoFrameMetadata {
20
+ }
10
21
  export declare class VideoFrame {
11
22
  private _data;
12
23
  private _closed;
@@ -50,6 +61,14 @@ export declare class VideoFrame {
50
61
  * Returns the number of bytes required to hold the frame
51
62
  */
52
63
  allocationSize(options?: VideoFrameCopyToOptions): number;
64
+ /**
65
+ * Returns metadata associated with this VideoFrame.
66
+ * Per W3C WebCodecs spec: https://w3c.github.io/webcodecs/video_frame_metadata_registry.html
67
+ *
68
+ * Note: Currently returns an empty object. Metadata fields like rtpTimestamp,
69
+ * rotation, and flip will be added as use cases require them.
70
+ */
71
+ metadata(): VideoFrameMetadata;
53
72
  /**
54
73
  * Returns the number of planes for this frame's format
55
74
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VideoFrame.d.ts","sourceRoot":"","sources":["../../src/core/VideoFrame.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAgB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EAKL,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,cAAc,EAAE,CAAC;AAehG,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA6B;IAEnD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAkB;IAErC,IAAI,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAA+C;IACpF,IAAI,UAAU,IAAI,MAAM,CAAgD;IACxE,IAAI,WAAW,IAAI,MAAM,CAAiD;IAC1E,IAAI,SAAS,IAAI,eAAe,GAAG,IAAI,CAAkD;IACzF,IAAI,WAAW,IAAI,eAAe,GAAG,IAAI,CAAoD;IAC7F,IAAI,YAAY,IAAI,MAAM,CAAkD;IAC5E,IAAI,aAAa,IAAI,MAAM,CAAmD;IAE9E,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAA2B;IACxD,IAAI,SAAS,IAAI,MAAM,CAA4B;IACnD,IAAI,UAAU,IAAI,eAAe,GAAG,IAAI,CAAmD;IAE3F;;OAEG;gBACS,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB;gBAC9C,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc;IAuNjD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IA0GrC;;OAEG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM;IAYzD;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACG,MAAM,CACV,WAAW,EAAE,YAAY,EACzB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC;IAiCzB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA4F9B;;OAEG;IACH,KAAK,IAAI,UAAU;IAyBnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,CAIxB;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,IAAI,CAEhC;IAED,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;CAU1B"}
1
+ {"version":3,"file":"VideoFrame.d.ts","sourceRoot":"","sources":["../../src/core/VideoFrame.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAgB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EAKL,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,cAAc,EAAE,CAAC;AAEhG;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;CAElC;AAeD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA6B;IAEnD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAkB;IAErC,IAAI,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAA+C;IACpF,IAAI,UAAU,IAAI,MAAM,CAAgD;IACxE,IAAI,WAAW,IAAI,MAAM,CAAiD;IAC1E,IAAI,SAAS,IAAI,eAAe,GAAG,IAAI,CAAkD;IACzF,IAAI,WAAW,IAAI,eAAe,GAAG,IAAI,CAAoD;IAC7F,IAAI,YAAY,IAAI,MAAM,CAAkD;IAC5E,IAAI,aAAa,IAAI,MAAM,CAAmD;IAE9E,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAA2B;IACxD,IAAI,SAAS,IAAI,MAAM,CAA4B;IACnD,IAAI,UAAU,IAAI,eAAe,GAAG,IAAI,CAAmD;IAE3F;;OAEG;gBACS,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB;gBAC9C,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,cAAc;IAuNjD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IA0GrC;;OAEG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM;IAYzD;;;;;;OAMG;IACH,QAAQ,IAAI,kBAAkB;IAK9B;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACG,MAAM,CACV,WAAW,EAAE,YAAY,EACzB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC;IAiCzB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,sBAAsB;IA4F9B;;OAEG;IACH,KAAK,IAAI,UAAU;IAyBnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb;;OAEG;IACH,IAAI,OAAO,IAAI,UAAU,CAIxB;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,IAAI,CAEhC;IAED,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -319,6 +319,17 @@ export class VideoFrame {
319
319
  const height = rect?.height ?? this._visibleRect.height;
320
320
  return getFrameAllocationSize(format, width, height);
321
321
  }
322
+ /**
323
+ * Returns metadata associated with this VideoFrame.
324
+ * Per W3C WebCodecs spec: https://w3c.github.io/webcodecs/video_frame_metadata_registry.html
325
+ *
326
+ * Note: Currently returns an empty object. Metadata fields like rtpTimestamp,
327
+ * rotation, and flip will be added as use cases require them.
328
+ */
329
+ metadata() {
330
+ this._checkNotClosed();
331
+ return {};
332
+ }
322
333
  /**
323
334
  * Returns the number of planes for this frame's format
324
335
  */