mediabunny 1.0.2 → 1.0.4

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 (188) hide show
  1. package/README.md +4 -4
  2. package/dist/mediabunny.d.ts +4 -2
  3. package/dist/modules/codec-data.d.ts +95 -0
  4. package/dist/modules/codec-data.d.ts.map +1 -0
  5. package/dist/modules/codec-data.js +1103 -0
  6. package/dist/modules/codec.d.ts +250 -0
  7. package/dist/modules/codec.d.ts.map +1 -0
  8. package/dist/modules/codec.js +1100 -0
  9. package/dist/modules/conversion.d.ts +158 -0
  10. package/dist/modules/conversion.d.ts.map +1 -0
  11. package/dist/modules/conversion.js +866 -0
  12. package/dist/modules/custom-coder.d.ts +119 -0
  13. package/dist/modules/custom-coder.d.ts.map +1 -0
  14. package/dist/modules/custom-coder.js +91 -0
  15. package/dist/modules/demuxer.d.ts +17 -0
  16. package/dist/modules/demuxer.d.ts.map +1 -0
  17. package/dist/modules/demuxer.js +12 -0
  18. package/dist/modules/index.d.ts +25 -0
  19. package/dist/modules/index.d.ts.map +1 -0
  20. package/dist/modules/index.js +24 -0
  21. package/dist/modules/input-format.d.ts +121 -0
  22. package/dist/modules/input-format.d.ts.map +1 -0
  23. package/dist/modules/input-format.js +333 -0
  24. package/dist/modules/input-track.d.ts +138 -0
  25. package/dist/modules/input-track.d.ts.map +1 -0
  26. package/dist/modules/input-track.js +230 -0
  27. package/dist/modules/input.d.ts +55 -0
  28. package/dist/modules/input.d.ts.map +1 -0
  29. package/dist/modules/input.js +104 -0
  30. package/dist/modules/isobmff/isobmff-boxes.d.ts +202 -0
  31. package/dist/modules/isobmff/isobmff-boxes.d.ts.map +1 -0
  32. package/dist/modules/isobmff/isobmff-boxes.js +1111 -0
  33. package/dist/modules/isobmff/isobmff-demuxer.d.ts +163 -0
  34. package/dist/modules/isobmff/isobmff-demuxer.d.ts.map +1 -0
  35. package/dist/modules/isobmff/isobmff-demuxer.js +2080 -0
  36. package/dist/modules/isobmff/isobmff-misc.d.ts +14 -0
  37. package/dist/modules/isobmff/isobmff-misc.d.ts.map +1 -0
  38. package/dist/modules/isobmff/isobmff-misc.js +20 -0
  39. package/dist/modules/isobmff/isobmff-muxer.d.ts +142 -0
  40. package/dist/modules/isobmff/isobmff-muxer.d.ts.map +1 -0
  41. package/dist/modules/isobmff/isobmff-muxer.js +858 -0
  42. package/dist/modules/isobmff/isobmff-reader.d.ts +36 -0
  43. package/dist/modules/isobmff/isobmff-reader.d.ts.map +1 -0
  44. package/dist/modules/isobmff/isobmff-reader.js +105 -0
  45. package/dist/modules/matroska/ebml.d.ts +156 -0
  46. package/dist/modules/matroska/ebml.d.ts.map +1 -0
  47. package/dist/modules/matroska/ebml.js +529 -0
  48. package/dist/modules/matroska/matroska-demuxer.d.ts +119 -0
  49. package/dist/modules/matroska/matroska-demuxer.d.ts.map +1 -0
  50. package/dist/modules/matroska/matroska-demuxer.js +1330 -0
  51. package/dist/modules/matroska/matroska-misc.d.ts +14 -0
  52. package/dist/modules/matroska/matroska-misc.d.ts.map +1 -0
  53. package/dist/modules/matroska/matroska-misc.js +20 -0
  54. package/dist/modules/matroska/matroska-muxer.d.ts +71 -0
  55. package/dist/modules/matroska/matroska-muxer.d.ts.map +1 -0
  56. package/dist/modules/matroska/matroska-muxer.js +729 -0
  57. package/dist/modules/media-sink.d.ts +272 -0
  58. package/dist/modules/media-sink.d.ts.map +1 -0
  59. package/dist/modules/media-sink.js +1264 -0
  60. package/dist/modules/media-source.d.ts +230 -0
  61. package/dist/modules/media-source.d.ts.map +1 -0
  62. package/dist/modules/media-source.js +1095 -0
  63. package/dist/modules/misc.d.ts +127 -0
  64. package/dist/modules/misc.d.ts.map +1 -0
  65. package/dist/modules/misc.js +462 -0
  66. package/dist/modules/mp3/mp3-demuxer.d.ts +32 -0
  67. package/dist/modules/mp3/mp3-demuxer.d.ts.map +1 -0
  68. package/dist/modules/mp3/mp3-demuxer.js +160 -0
  69. package/dist/modules/mp3/mp3-misc.d.ts +37 -0
  70. package/dist/modules/mp3/mp3-misc.d.ts.map +1 -0
  71. package/dist/modules/mp3/mp3-misc.js +122 -0
  72. package/dist/modules/mp3/mp3-muxer.d.ts +27 -0
  73. package/dist/modules/mp3/mp3-muxer.d.ts.map +1 -0
  74. package/dist/modules/mp3/mp3-muxer.js +112 -0
  75. package/dist/modules/mp3/mp3-reader.d.ts +25 -0
  76. package/dist/modules/mp3/mp3-reader.d.ts.map +1 -0
  77. package/dist/modules/mp3/mp3-reader.js +73 -0
  78. package/dist/modules/mp3/mp3-writer.d.ts +30 -0
  79. package/dist/modules/mp3/mp3-writer.d.ts.map +1 -0
  80. package/dist/modules/mp3/mp3-writer.js +72 -0
  81. package/dist/modules/muxer.d.ts +32 -0
  82. package/dist/modules/muxer.d.ts.map +1 -0
  83. package/dist/modules/muxer.js +50 -0
  84. package/dist/modules/ogg/ogg-demuxer.d.ts +53 -0
  85. package/dist/modules/ogg/ogg-demuxer.d.ts.map +1 -0
  86. package/dist/modules/ogg/ogg-demuxer.js +701 -0
  87. package/dist/modules/ogg/ogg-misc.d.ts +27 -0
  88. package/dist/modules/ogg/ogg-misc.d.ts.map +1 -0
  89. package/dist/modules/ogg/ogg-misc.js +78 -0
  90. package/dist/modules/ogg/ogg-muxer.d.ts +58 -0
  91. package/dist/modules/ogg/ogg-muxer.d.ts.map +1 -0
  92. package/dist/modules/ogg/ogg-muxer.js +345 -0
  93. package/dist/modules/ogg/ogg-reader.d.ts +37 -0
  94. package/dist/modules/ogg/ogg-reader.d.ts.map +1 -0
  95. package/dist/modules/ogg/ogg-reader.js +104 -0
  96. package/dist/modules/output-format.d.ts +285 -0
  97. package/dist/modules/output-format.d.ts.map +1 -0
  98. package/dist/modules/output-format.js +385 -0
  99. package/dist/modules/output.d.ts +134 -0
  100. package/dist/modules/output.d.ts.map +1 -0
  101. package/dist/modules/output.js +269 -0
  102. package/dist/modules/packet.d.ts +86 -0
  103. package/dist/modules/packet.d.ts.map +1 -0
  104. package/dist/modules/packet.js +133 -0
  105. package/dist/modules/pcm.d.ts +12 -0
  106. package/dist/modules/pcm.d.ts.map +1 -0
  107. package/dist/modules/pcm.js +85 -0
  108. package/dist/modules/reader.d.ts +40 -0
  109. package/dist/modules/reader.d.ts.map +1 -0
  110. package/dist/modules/reader.js +153 -0
  111. package/dist/modules/sample.d.ts +186 -0
  112. package/dist/modules/sample.d.ts.map +1 -0
  113. package/dist/modules/sample.js +798 -0
  114. package/dist/modules/source.d.ts +76 -0
  115. package/dist/modules/source.d.ts.map +1 -0
  116. package/dist/modules/source.js +183 -0
  117. package/dist/modules/subtitles.d.ts +37 -0
  118. package/dist/modules/subtitles.d.ts.map +1 -0
  119. package/dist/modules/subtitles.js +89 -0
  120. package/dist/modules/target.d.ts +58 -0
  121. package/dist/modules/target.d.ts.map +1 -0
  122. package/dist/modules/target.js +63 -0
  123. package/dist/modules/wave/riff-reader.d.ts +19 -0
  124. package/dist/modules/wave/riff-reader.d.ts.map +1 -0
  125. package/dist/modules/wave/riff-reader.js +38 -0
  126. package/dist/modules/wave/riff-writer.d.ts +18 -0
  127. package/dist/modules/wave/riff-writer.d.ts.map +1 -0
  128. package/dist/modules/wave/riff-writer.js +25 -0
  129. package/dist/modules/wave/wave-demuxer.d.ts +42 -0
  130. package/dist/modules/wave/wave-demuxer.d.ts.map +1 -0
  131. package/dist/modules/wave/wave-demuxer.js +239 -0
  132. package/dist/modules/wave/wave-muxer.d.ts +27 -0
  133. package/dist/modules/wave/wave-muxer.d.ts.map +1 -0
  134. package/dist/modules/wave/wave-muxer.js +108 -0
  135. package/dist/modules/writer.d.ts +85 -0
  136. package/dist/modules/writer.d.ts.map +1 -0
  137. package/dist/modules/writer.js +347 -0
  138. package/package.json +14 -10
  139. package/src/codec-data.ts +1394 -0
  140. package/src/codec.ts +1392 -0
  141. package/src/conversion.ts +1199 -0
  142. package/src/custom-coder.ts +162 -0
  143. package/src/demuxer.ts +22 -0
  144. package/src/index.ts +148 -0
  145. package/src/input-format.ts +386 -0
  146. package/src/input-track.ts +341 -0
  147. package/src/input.ts +138 -0
  148. package/src/isobmff/isobmff-boxes.ts +1365 -0
  149. package/src/isobmff/isobmff-demuxer.ts +2646 -0
  150. package/src/isobmff/isobmff-misc.ts +29 -0
  151. package/src/isobmff/isobmff-muxer.ts +1210 -0
  152. package/src/isobmff/isobmff-reader.ts +137 -0
  153. package/src/matroska/ebml.ts +595 -0
  154. package/src/matroska/matroska-demuxer.ts +1677 -0
  155. package/src/matroska/matroska-misc.ts +29 -0
  156. package/src/matroska/matroska-muxer.ts +999 -0
  157. package/src/media-sink.ts +1577 -0
  158. package/src/media-source.ts +1406 -0
  159. package/src/misc.ts +584 -0
  160. package/src/mp3/mp3-demuxer.ts +228 -0
  161. package/src/mp3/mp3-misc.ts +154 -0
  162. package/src/mp3/mp3-muxer.ts +153 -0
  163. package/src/mp3/mp3-reader.ts +93 -0
  164. package/src/mp3/mp3-writer.ts +112 -0
  165. package/src/muxer.ts +88 -0
  166. package/src/ogg/ogg-demuxer.ts +985 -0
  167. package/src/ogg/ogg-misc.ts +116 -0
  168. package/src/ogg/ogg-muxer.ts +480 -0
  169. package/src/ogg/ogg-reader.ts +143 -0
  170. package/src/output-format.ts +689 -0
  171. package/src/output.ts +427 -0
  172. package/src/packet.ts +180 -0
  173. package/src/pcm.ts +112 -0
  174. package/src/reader.ts +205 -0
  175. package/src/sample.ts +1029 -0
  176. package/src/source.ts +279 -0
  177. package/src/subtitles.ts +131 -0
  178. package/src/target.ts +106 -0
  179. package/src/tsconfig.json +13 -0
  180. package/src/wave/riff-reader.ts +48 -0
  181. package/src/wave/riff-writer.ts +30 -0
  182. package/src/wave/wave-demuxer.ts +317 -0
  183. package/src/wave/wave-muxer.ts +145 -0
  184. package/src/writer.ts +461 -0
  185. /package/dist/{mediabunny.js → bundles/mediabunny.cjs} +0 -0
  186. /package/dist/{mediabunny.min.js → bundles/mediabunny.min.cjs} +0 -0
  187. /package/dist/{mediabunny.min.mjs → bundles/mediabunny.min.mjs} +0 -0
  188. /package/dist/{mediabunny.mjs → bundles/mediabunny.mjs} +0 -0
@@ -0,0 +1,119 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ import { AudioCodec, VideoCodec } from './codec';
9
+ import { EncodedPacket } from './packet';
10
+ import { AudioSample, VideoSample } from './sample';
11
+ /**
12
+ * Base class for custom video decoders. To add your own custom video decoder, extend this class, implement the
13
+ * abstract methods and static `supports` method, and register the decoder using `registerDecoder`.
14
+ * @public
15
+ */
16
+ export declare abstract class CustomVideoDecoder {
17
+ /** The input video's codec. */
18
+ readonly codec: VideoCodec;
19
+ /** The input video's decoder config. */
20
+ readonly config: VideoDecoderConfig;
21
+ /** The callback to call when a decoded VideoSample is available. */
22
+ readonly onSample: (sample: VideoSample) => unknown;
23
+ /** Returns true iff the decoder can decode the given codec configuration. */
24
+ static supports(codec: VideoCodec, config: VideoDecoderConfig): boolean;
25
+ /** Called after decoder creation; can be used for custom initialization logic. */
26
+ abstract init(): Promise<void> | void;
27
+ /** Decodes the provided encoded packet. */
28
+ abstract decode(packet: EncodedPacket): Promise<void> | void;
29
+ /** Decodes all remaining packets and then resolves. */
30
+ abstract flush(): Promise<void> | void;
31
+ /** Called when the decoder is no longer needed and its resources can be freed. */
32
+ abstract close(): Promise<void> | void;
33
+ }
34
+ /**
35
+ * Base class for custom audio decoders. To add your own custom audio decoder, extend this class, implement the
36
+ * abstract methods and static `supports` method, and register the decoder using `registerDecoder`.
37
+ * @public
38
+ */
39
+ export declare abstract class CustomAudioDecoder {
40
+ /** The input audio's codec. */
41
+ readonly codec: AudioCodec;
42
+ /** The input audio's decoder config. */
43
+ readonly config: AudioDecoderConfig;
44
+ /** The callback to call when a decoded AudioSample is available. */
45
+ readonly onSample: (sample: AudioSample) => unknown;
46
+ /** Returns true iff the decoder can decode the given codec configuration. */
47
+ static supports(codec: AudioCodec, config: AudioDecoderConfig): boolean;
48
+ /** Called after decoder creation; can be used for custom initialization logic. */
49
+ abstract init(): Promise<void> | void;
50
+ /** Decodes the provided encoded packet. */
51
+ abstract decode(packet: EncodedPacket): Promise<void> | void;
52
+ /** Decodes all remaining packets and then resolves. */
53
+ abstract flush(): Promise<void> | void;
54
+ /** Called when the decoder is no longer needed and its resources can be freed. */
55
+ abstract close(): Promise<void> | void;
56
+ }
57
+ /**
58
+ * Base class for custom video encoders. To add your own custom video encoder, extend this class, implement the
59
+ * abstract methods and static `supports` method, and register the encoder using `registerEncoder`.
60
+ * @public
61
+ */
62
+ export declare abstract class CustomVideoEncoder {
63
+ /** The codec with which to encode the video. */
64
+ readonly codec: VideoCodec;
65
+ /** Config for the encoder. */
66
+ readonly config: VideoEncoderConfig;
67
+ /** The callback to call when an EncodedPacket is available. */
68
+ readonly onPacket: (packet: EncodedPacket, meta?: EncodedVideoChunkMetadata) => unknown;
69
+ /** Returns true iff the encoder can encode the given codec configuration. */
70
+ static supports(codec: VideoCodec, config: VideoEncoderConfig): boolean;
71
+ /** Called after encoder creation; can be used for custom initialization logic. */
72
+ abstract init(): Promise<void> | void;
73
+ /** Encodes the provided video sample. */
74
+ abstract encode(videoSample: VideoSample, options: VideoEncoderEncodeOptions): Promise<void> | void;
75
+ /** Encodes all remaining video samples and then resolves. */
76
+ abstract flush(): Promise<void> | void;
77
+ /** Called when the encoder is no longer needed and its resources can be freed. */
78
+ abstract close(): Promise<void> | void;
79
+ }
80
+ /**
81
+ * Base class for custom audio encoders. To add your own custom audio encoder, extend this class, implement the
82
+ * abstract methods and static `supports` method, and register the encoder using `registerEncoder`.
83
+ * @public
84
+ */
85
+ export declare abstract class CustomAudioEncoder {
86
+ /** The codec with which to encode the audio. */
87
+ readonly codec: AudioCodec;
88
+ /** Config for the encoder. */
89
+ readonly config: AudioEncoderConfig;
90
+ /** The callback to call when an EncodedPacket is available. */
91
+ readonly onPacket: (packet: EncodedPacket, meta?: EncodedAudioChunkMetadata) => unknown;
92
+ /** Returns true iff the encoder can encode the given codec configuration. */
93
+ static supports(codec: AudioCodec, config: AudioEncoderConfig): boolean;
94
+ /** Called after encoder creation; can be used for custom initialization logic. */
95
+ abstract init(): Promise<void> | void;
96
+ /** Encodes the provided audio sample. */
97
+ abstract encode(audioSample: AudioSample): Promise<void> | void;
98
+ /** Encodes all remaining audio samples and then resolves. */
99
+ abstract flush(): Promise<void> | void;
100
+ /** Called when the encoder is no longer needed and its resources can be freed. */
101
+ abstract close(): Promise<void> | void;
102
+ }
103
+ export declare const customVideoDecoders: typeof CustomVideoDecoder[];
104
+ export declare const customAudioDecoders: typeof CustomAudioDecoder[];
105
+ export declare const customVideoEncoders: typeof CustomVideoEncoder[];
106
+ export declare const customAudioEncoders: typeof CustomAudioEncoder[];
107
+ /**
108
+ * Registers a custom video or audio decoder. Registered decoders will automatically be used for decoding whenever
109
+ * possible.
110
+ * @public
111
+ */
112
+ export declare const registerDecoder: (decoder: typeof CustomVideoDecoder | typeof CustomAudioDecoder) => void;
113
+ /**
114
+ * Registers a custom video or audio encoder. Registered encoders will automatically be used for encoding whenever
115
+ * possible.
116
+ * @public
117
+ */
118
+ export declare const registerEncoder: (encoder: typeof CustomVideoEncoder | typeof CustomAudioEncoder) => void;
119
+ //# sourceMappingURL=custom-coder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-coder.d.ts","sourceRoot":"","sources":["../../src/custom-coder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ /**
9
+ * Base class for custom video decoders. To add your own custom video decoder, extend this class, implement the
10
+ * abstract methods and static `supports` method, and register the decoder using `registerDecoder`.
11
+ * @public
12
+ */
13
+ export class CustomVideoDecoder {
14
+ /** Returns true iff the decoder can decode the given codec configuration. */
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
+ static supports(codec, config) {
17
+ return false;
18
+ }
19
+ }
20
+ /**
21
+ * Base class for custom audio decoders. To add your own custom audio decoder, extend this class, implement the
22
+ * abstract methods and static `supports` method, and register the decoder using `registerDecoder`.
23
+ * @public
24
+ */
25
+ export class CustomAudioDecoder {
26
+ /** Returns true iff the decoder can decode the given codec configuration. */
27
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
+ static supports(codec, config) {
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * Base class for custom video encoders. To add your own custom video encoder, extend this class, implement the
34
+ * abstract methods and static `supports` method, and register the encoder using `registerEncoder`.
35
+ * @public
36
+ */
37
+ export class CustomVideoEncoder {
38
+ /** Returns true iff the encoder can encode the given codec configuration. */
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ static supports(codec, config) {
41
+ return false;
42
+ }
43
+ }
44
+ /**
45
+ * Base class for custom audio encoders. To add your own custom audio encoder, extend this class, implement the
46
+ * abstract methods and static `supports` method, and register the encoder using `registerEncoder`.
47
+ * @public
48
+ */
49
+ export class CustomAudioEncoder {
50
+ /** Returns true iff the encoder can encode the given codec configuration. */
51
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
+ static supports(codec, config) {
53
+ return false;
54
+ }
55
+ }
56
+ export const customVideoDecoders = [];
57
+ export const customAudioDecoders = [];
58
+ export const customVideoEncoders = [];
59
+ export const customAudioEncoders = [];
60
+ /**
61
+ * Registers a custom video or audio decoder. Registered decoders will automatically be used for decoding whenever
62
+ * possible.
63
+ * @public
64
+ */
65
+ export const registerDecoder = (decoder) => {
66
+ if (decoder.prototype instanceof CustomVideoDecoder) {
67
+ customVideoDecoders.push(decoder);
68
+ }
69
+ else if (decoder.prototype instanceof CustomAudioDecoder) {
70
+ customAudioDecoders.push(decoder);
71
+ }
72
+ else {
73
+ throw new TypeError('Decoder must be a CustomVideoDecoder or CustomAudioDecoder.');
74
+ }
75
+ };
76
+ /**
77
+ * Registers a custom video or audio encoder. Registered encoders will automatically be used for encoding whenever
78
+ * possible.
79
+ * @public
80
+ */
81
+ export const registerEncoder = (encoder) => {
82
+ if (encoder.prototype instanceof CustomVideoEncoder) {
83
+ customVideoEncoders.push(encoder);
84
+ }
85
+ else if (encoder.prototype instanceof CustomAudioEncoder) {
86
+ customAudioEncoders.push(encoder);
87
+ }
88
+ else {
89
+ throw new TypeError('Encoder must be a CustomVideoEncoder or CustomAudioEncoder.');
90
+ }
91
+ };
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ import { Input } from './input';
9
+ import { InputTrack } from './input-track';
10
+ export declare abstract class Demuxer {
11
+ input: Input;
12
+ constructor(input: Input);
13
+ abstract computeDuration(): Promise<number>;
14
+ abstract getTracks(): Promise<InputTrack[]>;
15
+ abstract getMimeType(): Promise<string>;
16
+ }
17
+ //# sourceMappingURL=demuxer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demuxer.d.ts","sourceRoot":"","sources":["../../src/demuxer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,8BAAsB,OAAO;IAC5B,KAAK,EAAE,KAAK,CAAC;gBAED,KAAK,EAAE,KAAK;IAIxB,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAC3C,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;CACvC"}
@@ -0,0 +1,12 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ export class Demuxer {
9
+ constructor(input) {
10
+ this.input = input;
11
+ }
12
+ }
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ /// <reference types="dom-mediacapture-transform" preserve="true" />
9
+ /// <reference types="dom-webcodecs" preserve="true" />
10
+ export { Output, OutputOptions, BaseTrackMetadata, VideoTrackMetadata, AudioTrackMetadata, SubtitleTrackMetadata, TrackType, ALL_TRACK_TYPES, } from './output';
11
+ export { OutputFormat, IsobmffOutputFormat, Mp4OutputFormat, MovOutputFormat, IsobmffOutputFormatOptions, MkvOutputFormat, MkvOutputFormatOptions, WebMOutputFormat, WebMOutputFormatOptions, Mp3OutputFormat, Mp3OutputFormatOptions, WavOutputFormat, WavOutputFormatOptions, OggOutputFormat, OggOutputFormatOptions, TrackCountLimits, InclusiveIntegerRange, } from './output-format';
12
+ export { VideoEncodingConfig, AudioEncodingConfig, MediaSource, VideoSource, EncodedVideoPacketSource, VideoSampleSource, CanvasSource, MediaStreamVideoTrackSource, AudioSource, EncodedAudioPacketSource, AudioSampleSource, AudioBufferSource, MediaStreamAudioTrackSource, SubtitleSource, TextSubtitleSource, } from './media-source';
13
+ export { VIDEO_CODECS, VideoCodec, PCM_AUDIO_CODECS, NON_PCM_AUDIO_CODECS, AUDIO_CODECS, AudioCodec, SUBTITLE_CODECS, SubtitleCodec, MediaCodec, Quality, QUALITY_VERY_LOW, QUALITY_LOW, QUALITY_MEDIUM, QUALITY_HIGH, QUALITY_VERY_HIGH, canEncode, canEncodeVideo, canEncodeAudio, canEncodeSubtitles, getEncodableCodecs, getEncodableVideoCodecs, getEncodableAudioCodecs, getEncodableSubtitleCodecs, getFirstEncodableVideoCodec, getFirstEncodableAudioCodec, getFirstEncodableSubtitleCodec, } from './codec';
14
+ export { Target, BufferTarget, StreamTarget, StreamTargetChunk, StreamTargetOptions } from './target';
15
+ export { Rotation, AnyIterable, SetRequired } from './misc';
16
+ export { Source, BufferSource, StreamSource, StreamSourceOptions, BlobSource, UrlSource, UrlSourceOptions, } from './source';
17
+ export { InputFormat, IsobmffInputFormat, Mp4InputFormat, QuickTimeInputFormat, MatroskaInputFormat, WebMInputFormat, Mp3InputFormat, WaveInputFormat, OggInputFormat, ALL_FORMATS, MP4, QTFF, MATROSKA, WEBM, MP3, WAVE, OGG, } from './input-format';
18
+ export { Input, InputOptions } from './input';
19
+ export { InputTrack, InputVideoTrack, InputAudioTrack, PacketStats } from './input-track';
20
+ export { EncodedPacket, PacketType } from './packet';
21
+ export { VideoSample, VideoSampleInit, AudioSample, AudioSampleInit, AudioSampleCopyToOptions, } from './sample';
22
+ export { PacketRetrievalOptions, EncodedPacketSink, BaseMediaSampleSink, VideoSampleSink, CanvasSinkOptions, CanvasSink, WrappedCanvas, AudioSampleSink, AudioBufferSink, WrappedAudioBuffer, } from './media-sink';
23
+ export { ConversionOptions, Conversion } from './conversion';
24
+ export { CustomVideoDecoder, CustomAudioDecoder, CustomVideoEncoder, CustomAudioEncoder, registerDecoder, registerEncoder, } from './custom-coder';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;;AAKH,OAAO,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,eAAe,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,EAC3B,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EACN,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,GAAG,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EACN,WAAW,EACX,eAAe,EACf,WAAW,EACX,eAAe,EACf,wBAAwB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACN,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EACN,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,GACf,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ /// <reference types="dom-mediacapture-transform" preserve="true" />
9
+ /// <reference types="dom-webcodecs" preserve="true" />
10
+ export { Output, ALL_TRACK_TYPES, } from './output.js';
11
+ export { OutputFormat, IsobmffOutputFormat, Mp4OutputFormat, MovOutputFormat, MkvOutputFormat, WebMOutputFormat, Mp3OutputFormat, WavOutputFormat, OggOutputFormat, } from './output-format.js';
12
+ export { MediaSource, VideoSource, EncodedVideoPacketSource, VideoSampleSource, CanvasSource, MediaStreamVideoTrackSource, AudioSource, EncodedAudioPacketSource, AudioSampleSource, AudioBufferSource, MediaStreamAudioTrackSource, SubtitleSource, TextSubtitleSource, } from './media-source.js';
13
+ export { VIDEO_CODECS, PCM_AUDIO_CODECS, NON_PCM_AUDIO_CODECS, AUDIO_CODECS, SUBTITLE_CODECS, Quality, QUALITY_VERY_LOW, QUALITY_LOW, QUALITY_MEDIUM, QUALITY_HIGH, QUALITY_VERY_HIGH, canEncode, canEncodeVideo, canEncodeAudio, canEncodeSubtitles, getEncodableCodecs, getEncodableVideoCodecs, getEncodableAudioCodecs, getEncodableSubtitleCodecs, getFirstEncodableVideoCodec, getFirstEncodableAudioCodec, getFirstEncodableSubtitleCodec, } from './codec.js';
14
+ export { Target, BufferTarget, StreamTarget } from './target.js';
15
+ export { Source, BufferSource, StreamSource, BlobSource, UrlSource, } from './source.js';
16
+ export { InputFormat, IsobmffInputFormat, Mp4InputFormat, QuickTimeInputFormat, MatroskaInputFormat, WebMInputFormat, Mp3InputFormat, WaveInputFormat, OggInputFormat, ALL_FORMATS, MP4, QTFF, MATROSKA, WEBM, MP3, WAVE, OGG, } from './input-format.js';
17
+ export { Input } from './input.js';
18
+ export { InputTrack, InputVideoTrack, InputAudioTrack } from './input-track.js';
19
+ export { EncodedPacket } from './packet.js';
20
+ export { VideoSample, AudioSample, } from './sample.js';
21
+ export { EncodedPacketSink, BaseMediaSampleSink, VideoSampleSink, CanvasSink, AudioSampleSink, AudioBufferSink, } from './media-sink.js';
22
+ export { Conversion } from './conversion.js';
23
+ export { CustomVideoDecoder, CustomAudioDecoder, CustomVideoEncoder, CustomAudioEncoder, registerDecoder, registerEncoder, } from './custom-coder.js';
24
+ // 🐡🦔
@@ -0,0 +1,121 @@
1
+ /*!
2
+ * Copyright (c) 2025-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+ /**
9
+ * Base class representing an input media file format.
10
+ * @public
11
+ */
12
+ export declare abstract class InputFormat {
13
+ /** Returns the name of the input format. */
14
+ abstract get name(): string;
15
+ /** Returns the typical base MIME type of the input format. */
16
+ abstract get mimeType(): string;
17
+ }
18
+ /**
19
+ * Format representing files compatible with the ISO base media file format (ISOBMFF), like MP4 or MOV files.
20
+ * @public
21
+ */
22
+ export declare abstract class IsobmffInputFormat extends InputFormat {
23
+ }
24
+ /**
25
+ * MPEG-4 Part 14 (MP4) file format.
26
+ * @public
27
+ */
28
+ export declare class Mp4InputFormat extends IsobmffInputFormat {
29
+ get name(): string;
30
+ get mimeType(): string;
31
+ }
32
+ /**
33
+ * QuickTime File Format (QTFF), often called MOV.
34
+ * @public
35
+ */
36
+ export declare class QuickTimeInputFormat extends IsobmffInputFormat {
37
+ get name(): string;
38
+ get mimeType(): string;
39
+ }
40
+ /**
41
+ * Matroska file format.
42
+ * @public
43
+ */
44
+ export declare class MatroskaInputFormat extends InputFormat {
45
+ get name(): string;
46
+ get mimeType(): string;
47
+ }
48
+ /**
49
+ * WebM file format, based on Matroska.
50
+ * @public
51
+ */
52
+ export declare class WebMInputFormat extends MatroskaInputFormat {
53
+ get name(): string;
54
+ get mimeType(): string;
55
+ }
56
+ /**
57
+ * MP3 file format.
58
+ * @public
59
+ */
60
+ export declare class Mp3InputFormat extends InputFormat {
61
+ get name(): string;
62
+ get mimeType(): string;
63
+ }
64
+ /**
65
+ * WAVE file format, based on RIFF.
66
+ * @public
67
+ */
68
+ export declare class WaveInputFormat extends InputFormat {
69
+ get name(): string;
70
+ get mimeType(): string;
71
+ }
72
+ /**
73
+ * Ogg file format.
74
+ * @public
75
+ */
76
+ export declare class OggInputFormat extends InputFormat {
77
+ get name(): string;
78
+ get mimeType(): string;
79
+ }
80
+ /**
81
+ * MP4 input format singleton.
82
+ * @public
83
+ */
84
+ export declare const MP4: Mp4InputFormat;
85
+ /**
86
+ * QuickTime File Format input format singleton.
87
+ * @public
88
+ */
89
+ export declare const QTFF: QuickTimeInputFormat;
90
+ /**
91
+ * Matroska input format singleton.
92
+ * @public
93
+ */
94
+ export declare const MATROSKA: MatroskaInputFormat;
95
+ /**
96
+ * WebM input format singleton.
97
+ * @public
98
+ */
99
+ export declare const WEBM: WebMInputFormat;
100
+ /**
101
+ * MP3 input format singleton.
102
+ * @public
103
+ */
104
+ export declare const MP3: Mp3InputFormat;
105
+ /**
106
+ * WAVE input format singleton.
107
+ * @public
108
+ */
109
+ export declare const WAVE: WaveInputFormat;
110
+ /**
111
+ * Ogg input format singleton.
112
+ * @public
113
+ */
114
+ export declare const OGG: OggInputFormat;
115
+ /**
116
+ * List of all input format singletons. If you don't need to support all input formats, you should specify the
117
+ * formats individually for better tree shaking.
118
+ * @public
119
+ */
120
+ export declare const ALL_FORMATS: InputFormat[];
121
+ //# sourceMappingURL=input-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-format.d.ts","sourceRoot":"","sources":["../../src/input-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH;;;GAGG;AACH,8BAAsB,WAAW;IAOhC,4CAA4C;IAC5C,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,8BAAsB,kBAAmB,SAAQ,WAAW;CAuB3D;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IAOrD,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IAO3D,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAyEnD,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB;IAMvD,IAAa,IAAI,WAEhB;IAED,IAAa,QAAQ,WAEpB;CACD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAoD9C,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAwB/C,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAiB9C,IAAI,IAAI,WAEP;IAED,IAAI,QAAQ,WAEX;CACD;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,gBAAuB,CAAC;AACxC;;;GAGG;AACH,eAAO,MAAM,IAAI,sBAA6B,CAAC;AAC/C;;;GAGG;AACH,eAAO,MAAM,QAAQ,qBAA4B,CAAC;AAClD;;;GAGG;AACH,eAAO,MAAM,IAAI,iBAAwB,CAAC;AAC1C;;;GAGG;AACH,eAAO,MAAM,GAAG,gBAAuB,CAAC;AACxC;;;GAGG;AACH,eAAO,MAAM,IAAI,iBAAwB,CAAC;AAC1C;;;GAGG;AACH,eAAO,MAAM,GAAG,gBAAuB,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,EAAgD,CAAC"}