@m7mdxzx1/discord-video-strem 0.0.1

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 (89) hide show
  1. package/README.md +294 -0
  2. package/dist/client/GatewayEvents.d.ts +27 -0
  3. package/dist/client/GatewayEvents.js +1 -0
  4. package/dist/client/GatewayOpCodes.d.ts +40 -0
  5. package/dist/client/GatewayOpCodes.js +41 -0
  6. package/dist/client/Streamer.d.ts +41 -0
  7. package/dist/client/Streamer.js +189 -0
  8. package/dist/client/encryptor/TransportEncryptor.d.ts +16 -0
  9. package/dist/client/encryptor/TransportEncryptor.js +38 -0
  10. package/dist/client/index.d.ts +4 -0
  11. package/dist/client/index.js +4 -0
  12. package/dist/client/packet/AudioPacketizer.d.ts +8 -0
  13. package/dist/client/packet/AudioPacketizer.js +22 -0
  14. package/dist/client/packet/BaseMediaPacketizer.d.ts +109 -0
  15. package/dist/client/packet/BaseMediaPacketizer.js +243 -0
  16. package/dist/client/packet/VideoPacketizerAnnexB.d.ts +132 -0
  17. package/dist/client/packet/VideoPacketizerAnnexB.js +231 -0
  18. package/dist/client/packet/VideoPacketizerVP8.d.ts +15 -0
  19. package/dist/client/packet/VideoPacketizerVP8.js +56 -0
  20. package/dist/client/packet/index.d.ts +4 -0
  21. package/dist/client/packet/index.js +4 -0
  22. package/dist/client/processing/AnnexBHelper.d.ts +93 -0
  23. package/dist/client/processing/AnnexBHelper.js +132 -0
  24. package/dist/client/voice/BaseMediaConnection.d.ts +118 -0
  25. package/dist/client/voice/BaseMediaConnection.js +319 -0
  26. package/dist/client/voice/MediaUdp.d.ts +26 -0
  27. package/dist/client/voice/MediaUdp.js +140 -0
  28. package/dist/client/voice/StreamConnection.d.ts +10 -0
  29. package/dist/client/voice/StreamConnection.js +30 -0
  30. package/dist/client/voice/VoiceConnection.d.ts +7 -0
  31. package/dist/client/voice/VoiceConnection.js +10 -0
  32. package/dist/client/voice/VoiceMessageTypes.d.ts +136 -0
  33. package/dist/client/voice/VoiceMessageTypes.js +1 -0
  34. package/dist/client/voice/VoiceOpCodes.d.ts +21 -0
  35. package/dist/client/voice/VoiceOpCodes.js +22 -0
  36. package/dist/client/voice/index.d.ts +5 -0
  37. package/dist/client/voice/index.js +5 -0
  38. package/dist/index.d.ts +5 -0
  39. package/dist/index.js +5 -0
  40. package/dist/media/AudioStream.d.ts +25 -0
  41. package/dist/media/AudioStream.js +63 -0
  42. package/dist/media/BaseMediaStream.d.ts +31 -0
  43. package/dist/media/BaseMediaStream.js +145 -0
  44. package/dist/media/LibavCodecId.d.ts +541 -0
  45. package/dist/media/LibavCodecId.js +552 -0
  46. package/dist/media/LibavDecoder.d.ts +5 -0
  47. package/dist/media/LibavDecoder.js +63 -0
  48. package/dist/media/LibavDemuxer.d.ts +23 -0
  49. package/dist/media/LibavDemuxer.js +295 -0
  50. package/dist/media/VideoStream.d.ts +7 -0
  51. package/dist/media/VideoStream.js +10 -0
  52. package/dist/media/index.d.ts +1 -0
  53. package/dist/media/index.js +1 -0
  54. package/dist/media/newApi.d.ts +126 -0
  55. package/dist/media/newApi.js +387 -0
  56. package/dist/media/utils.d.ts +1 -0
  57. package/dist/media/utils.js +4 -0
  58. package/dist/utils.d.ts +28 -0
  59. package/dist/utils.js +54 -0
  60. package/package.json +69 -0
  61. package/src/client/GatewayEvents.ts +41 -0
  62. package/src/client/GatewayOpCodes.ts +40 -0
  63. package/src/client/Streamer.ts +279 -0
  64. package/src/client/encryptor/TransportEncryptor.ts +62 -0
  65. package/src/client/index.ts +4 -0
  66. package/src/client/packet/AudioPacketizer.ts +28 -0
  67. package/src/client/packet/BaseMediaPacketizer.ts +307 -0
  68. package/src/client/packet/VideoPacketizerAnnexB.ts +263 -0
  69. package/src/client/packet/VideoPacketizerVP8.ts +73 -0
  70. package/src/client/packet/index.ts +4 -0
  71. package/src/client/processing/AnnexBHelper.ts +142 -0
  72. package/src/client/voice/BaseMediaConnection.ts +407 -0
  73. package/src/client/voice/MediaUdp.ts +171 -0
  74. package/src/client/voice/StreamConnection.ts +33 -0
  75. package/src/client/voice/VoiceConnection.ts +15 -0
  76. package/src/client/voice/VoiceMessageTypes.ts +164 -0
  77. package/src/client/voice/VoiceOpCodes.ts +21 -0
  78. package/src/client/voice/index.ts +5 -0
  79. package/src/index.ts +5 -0
  80. package/src/media/AudioStream.ts +81 -0
  81. package/src/media/BaseMediaStream.ts +173 -0
  82. package/src/media/LibavCodecId.ts +566 -0
  83. package/src/media/LibavDecoder.ts +82 -0
  84. package/src/media/LibavDemuxer.ts +348 -0
  85. package/src/media/VideoStream.ts +15 -0
  86. package/src/media/index.ts +1 -0
  87. package/src/media/newApi.ts +618 -0
  88. package/src/media/utils.ts +6 -0
  89. package/src/utils.ts +77 -0
@@ -0,0 +1,566 @@
1
+ // https://ffmpeg.org/doxygen/7.0/codec__id_8h_source.html
2
+
3
+ // biome-ignore lint/style/useEnumInitializers: copied from upstream ffmpeg
4
+ export enum AVCodecID {
5
+ AV_CODEC_ID_NONE,
6
+
7
+ /* video codecs */
8
+ AV_CODEC_ID_MPEG1VIDEO,
9
+ AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
10
+ AV_CODEC_ID_H261,
11
+ AV_CODEC_ID_H263,
12
+ AV_CODEC_ID_RV10,
13
+ AV_CODEC_ID_RV20,
14
+ AV_CODEC_ID_MJPEG,
15
+ AV_CODEC_ID_MJPEGB,
16
+ AV_CODEC_ID_LJPEG,
17
+ AV_CODEC_ID_SP5X,
18
+ AV_CODEC_ID_JPEGLS,
19
+ AV_CODEC_ID_MPEG4,
20
+ AV_CODEC_ID_RAWVIDEO,
21
+ AV_CODEC_ID_MSMPEG4V1,
22
+ AV_CODEC_ID_MSMPEG4V2,
23
+ AV_CODEC_ID_MSMPEG4V3,
24
+ AV_CODEC_ID_WMV1,
25
+ AV_CODEC_ID_WMV2,
26
+ AV_CODEC_ID_H263P,
27
+ AV_CODEC_ID_H263I,
28
+ AV_CODEC_ID_FLV1,
29
+ AV_CODEC_ID_SVQ1,
30
+ AV_CODEC_ID_SVQ3,
31
+ AV_CODEC_ID_DVVIDEO,
32
+ AV_CODEC_ID_HUFFYUV,
33
+ AV_CODEC_ID_CYUV,
34
+ AV_CODEC_ID_H264,
35
+ AV_CODEC_ID_INDEO3,
36
+ AV_CODEC_ID_VP3,
37
+ AV_CODEC_ID_THEORA,
38
+ AV_CODEC_ID_ASV1,
39
+ AV_CODEC_ID_ASV2,
40
+ AV_CODEC_ID_FFV1,
41
+ AV_CODEC_ID_4XM,
42
+ AV_CODEC_ID_VCR1,
43
+ AV_CODEC_ID_CLJR,
44
+ AV_CODEC_ID_MDEC,
45
+ AV_CODEC_ID_ROQ,
46
+ AV_CODEC_ID_INTERPLAY_VIDEO,
47
+ AV_CODEC_ID_XAN_WC3,
48
+ AV_CODEC_ID_XAN_WC4,
49
+ AV_CODEC_ID_RPZA,
50
+ AV_CODEC_ID_CINEPAK,
51
+ AV_CODEC_ID_WS_VQA,
52
+ AV_CODEC_ID_MSRLE,
53
+ AV_CODEC_ID_MSVIDEO1,
54
+ AV_CODEC_ID_IDCIN,
55
+ AV_CODEC_ID_8BPS,
56
+ AV_CODEC_ID_SMC,
57
+ AV_CODEC_ID_FLIC,
58
+ AV_CODEC_ID_TRUEMOTION1,
59
+ AV_CODEC_ID_VMDVIDEO,
60
+ AV_CODEC_ID_MSZH,
61
+ AV_CODEC_ID_ZLIB,
62
+ AV_CODEC_ID_QTRLE,
63
+ AV_CODEC_ID_TSCC,
64
+ AV_CODEC_ID_ULTI,
65
+ AV_CODEC_ID_QDRAW,
66
+ AV_CODEC_ID_VIXL,
67
+ AV_CODEC_ID_QPEG,
68
+ AV_CODEC_ID_PNG,
69
+ AV_CODEC_ID_PPM,
70
+ AV_CODEC_ID_PBM,
71
+ AV_CODEC_ID_PGM,
72
+ AV_CODEC_ID_PGMYUV,
73
+ AV_CODEC_ID_PAM,
74
+ AV_CODEC_ID_FFVHUFF,
75
+ AV_CODEC_ID_RV30,
76
+ AV_CODEC_ID_RV40,
77
+ AV_CODEC_ID_VC1,
78
+ AV_CODEC_ID_WMV3,
79
+ AV_CODEC_ID_LOCO,
80
+ AV_CODEC_ID_WNV1,
81
+ AV_CODEC_ID_AASC,
82
+ AV_CODEC_ID_INDEO2,
83
+ AV_CODEC_ID_FRAPS,
84
+ AV_CODEC_ID_TRUEMOTION2,
85
+ AV_CODEC_ID_BMP,
86
+ AV_CODEC_ID_CSCD,
87
+ AV_CODEC_ID_MMVIDEO,
88
+ AV_CODEC_ID_ZMBV,
89
+ AV_CODEC_ID_AVS,
90
+ AV_CODEC_ID_SMACKVIDEO,
91
+ AV_CODEC_ID_NUV,
92
+ AV_CODEC_ID_KMVC,
93
+ AV_CODEC_ID_FLASHSV,
94
+ AV_CODEC_ID_CAVS,
95
+ AV_CODEC_ID_JPEG2000,
96
+ AV_CODEC_ID_VMNC,
97
+ AV_CODEC_ID_VP5,
98
+ AV_CODEC_ID_VP6,
99
+ AV_CODEC_ID_VP6F,
100
+ AV_CODEC_ID_TARGA,
101
+ AV_CODEC_ID_DSICINVIDEO,
102
+ AV_CODEC_ID_TIERTEXSEQVIDEO,
103
+ AV_CODEC_ID_TIFF,
104
+ AV_CODEC_ID_GIF,
105
+ AV_CODEC_ID_DXA,
106
+ AV_CODEC_ID_DNXHD,
107
+ AV_CODEC_ID_THP,
108
+ AV_CODEC_ID_SGI,
109
+ AV_CODEC_ID_C93,
110
+ AV_CODEC_ID_BETHSOFTVID,
111
+ AV_CODEC_ID_PTX,
112
+ AV_CODEC_ID_TXD,
113
+ AV_CODEC_ID_VP6A,
114
+ AV_CODEC_ID_AMV,
115
+ AV_CODEC_ID_VB,
116
+ AV_CODEC_ID_PCX,
117
+ AV_CODEC_ID_SUNRAST,
118
+ AV_CODEC_ID_INDEO4,
119
+ AV_CODEC_ID_INDEO5,
120
+ AV_CODEC_ID_MIMIC,
121
+ AV_CODEC_ID_RL2,
122
+ AV_CODEC_ID_ESCAPE124,
123
+ AV_CODEC_ID_DIRAC,
124
+ AV_CODEC_ID_BFI,
125
+ AV_CODEC_ID_CMV,
126
+ AV_CODEC_ID_MOTIONPIXELS,
127
+ AV_CODEC_ID_TGV,
128
+ AV_CODEC_ID_TGQ,
129
+ AV_CODEC_ID_TQI,
130
+ AV_CODEC_ID_AURA,
131
+ AV_CODEC_ID_AURA2,
132
+ AV_CODEC_ID_V210X,
133
+ AV_CODEC_ID_TMV,
134
+ AV_CODEC_ID_V210,
135
+ AV_CODEC_ID_DPX,
136
+ AV_CODEC_ID_MAD,
137
+ AV_CODEC_ID_FRWU,
138
+ AV_CODEC_ID_FLASHSV2,
139
+ AV_CODEC_ID_CDGRAPHICS,
140
+ AV_CODEC_ID_R210,
141
+ AV_CODEC_ID_ANM,
142
+ AV_CODEC_ID_BINKVIDEO,
143
+ AV_CODEC_ID_IFF_ILBM,
144
+ AV_CODEC_ID_IFF_BYTERUN1 = AV_CODEC_ID_IFF_ILBM,
145
+ AV_CODEC_ID_KGV1,
146
+ AV_CODEC_ID_YOP,
147
+ AV_CODEC_ID_VP8,
148
+ AV_CODEC_ID_PICTOR,
149
+ AV_CODEC_ID_ANSI,
150
+ AV_CODEC_ID_A64_MULTI,
151
+ AV_CODEC_ID_A64_MULTI5,
152
+ AV_CODEC_ID_R10K,
153
+ AV_CODEC_ID_MXPEG,
154
+ AV_CODEC_ID_LAGARITH,
155
+ AV_CODEC_ID_PRORES,
156
+ AV_CODEC_ID_JV,
157
+ AV_CODEC_ID_DFA,
158
+ AV_CODEC_ID_WMV3IMAGE,
159
+ AV_CODEC_ID_VC1IMAGE,
160
+ AV_CODEC_ID_UTVIDEO,
161
+ AV_CODEC_ID_BMV_VIDEO,
162
+ AV_CODEC_ID_VBLE,
163
+ AV_CODEC_ID_DXTORY,
164
+ AV_CODEC_ID_V410,
165
+ AV_CODEC_ID_XWD,
166
+ AV_CODEC_ID_CDXL,
167
+ AV_CODEC_ID_XBM,
168
+ AV_CODEC_ID_ZEROCODEC,
169
+ AV_CODEC_ID_MSS1,
170
+ AV_CODEC_ID_MSA1,
171
+ AV_CODEC_ID_TSCC2,
172
+ AV_CODEC_ID_MTS2,
173
+ AV_CODEC_ID_CLLC,
174
+ AV_CODEC_ID_MSS2,
175
+ AV_CODEC_ID_VP9,
176
+ AV_CODEC_ID_AIC,
177
+ AV_CODEC_ID_ESCAPE130,
178
+ AV_CODEC_ID_G2M,
179
+ AV_CODEC_ID_WEBP,
180
+ AV_CODEC_ID_HNM4_VIDEO,
181
+ AV_CODEC_ID_HEVC,
182
+ AV_CODEC_ID_H265 = AV_CODEC_ID_HEVC,
183
+ AV_CODEC_ID_FIC,
184
+ AV_CODEC_ID_ALIAS_PIX,
185
+ AV_CODEC_ID_BRENDER_PIX,
186
+ AV_CODEC_ID_PAF_VIDEO,
187
+ AV_CODEC_ID_EXR,
188
+ AV_CODEC_ID_VP7,
189
+ AV_CODEC_ID_SANM,
190
+ AV_CODEC_ID_SGIRLE,
191
+ AV_CODEC_ID_MVC1,
192
+ AV_CODEC_ID_MVC2,
193
+ AV_CODEC_ID_HQX,
194
+ AV_CODEC_ID_TDSC,
195
+ AV_CODEC_ID_HQ_HQA,
196
+ AV_CODEC_ID_HAP,
197
+ AV_CODEC_ID_DDS,
198
+ AV_CODEC_ID_DXV,
199
+ AV_CODEC_ID_SCREENPRESSO,
200
+ AV_CODEC_ID_RSCC,
201
+ AV_CODEC_ID_AVS2,
202
+ AV_CODEC_ID_PGX,
203
+ AV_CODEC_ID_AVS3,
204
+ AV_CODEC_ID_MSP2,
205
+ AV_CODEC_ID_VVC,
206
+ AV_CODEC_ID_H266 = AV_CODEC_ID_VVC,
207
+ AV_CODEC_ID_Y41P,
208
+ AV_CODEC_ID_AVRP,
209
+ AV_CODEC_ID_012V,
210
+ AV_CODEC_ID_AVUI,
211
+ AV_CODEC_ID_TARGA_Y216,
212
+ AV_CODEC_ID_V308,
213
+ AV_CODEC_ID_V408,
214
+ AV_CODEC_ID_YUV4,
215
+ AV_CODEC_ID_AVRN,
216
+ AV_CODEC_ID_CPIA,
217
+ AV_CODEC_ID_XFACE,
218
+ AV_CODEC_ID_SNOW,
219
+ AV_CODEC_ID_SMVJPEG,
220
+ AV_CODEC_ID_APNG,
221
+ AV_CODEC_ID_DAALA,
222
+ AV_CODEC_ID_CFHD,
223
+ AV_CODEC_ID_TRUEMOTION2RT,
224
+ AV_CODEC_ID_M101,
225
+ AV_CODEC_ID_MAGICYUV,
226
+ AV_CODEC_ID_SHEERVIDEO,
227
+ AV_CODEC_ID_YLC,
228
+ AV_CODEC_ID_PSD,
229
+ AV_CODEC_ID_PIXLET,
230
+ AV_CODEC_ID_SPEEDHQ,
231
+ AV_CODEC_ID_FMVC,
232
+ AV_CODEC_ID_SCPR,
233
+ AV_CODEC_ID_CLEARVIDEO,
234
+ AV_CODEC_ID_XPM,
235
+ AV_CODEC_ID_AV1,
236
+ AV_CODEC_ID_BITPACKED,
237
+ AV_CODEC_ID_MSCC,
238
+ AV_CODEC_ID_SRGC,
239
+ AV_CODEC_ID_SVG,
240
+ AV_CODEC_ID_GDV,
241
+ AV_CODEC_ID_FITS,
242
+ AV_CODEC_ID_IMM4,
243
+ AV_CODEC_ID_PROSUMER,
244
+ AV_CODEC_ID_MWSC,
245
+ AV_CODEC_ID_WCMV,
246
+ AV_CODEC_ID_RASC,
247
+ AV_CODEC_ID_HYMT,
248
+ AV_CODEC_ID_ARBC,
249
+ AV_CODEC_ID_AGM,
250
+ AV_CODEC_ID_LSCR,
251
+ AV_CODEC_ID_VP4,
252
+ AV_CODEC_ID_IMM5,
253
+ AV_CODEC_ID_MVDV,
254
+ AV_CODEC_ID_MVHA,
255
+ AV_CODEC_ID_CDTOONS,
256
+ AV_CODEC_ID_MV30,
257
+ AV_CODEC_ID_NOTCHLC,
258
+ AV_CODEC_ID_PFM,
259
+ AV_CODEC_ID_MOBICLIP,
260
+ AV_CODEC_ID_PHOTOCD,
261
+ AV_CODEC_ID_IPU,
262
+ AV_CODEC_ID_ARGO,
263
+ AV_CODEC_ID_CRI,
264
+ AV_CODEC_ID_SIMBIOSIS_IMX,
265
+ AV_CODEC_ID_SGA_VIDEO,
266
+ AV_CODEC_ID_GEM,
267
+ AV_CODEC_ID_VBN,
268
+ AV_CODEC_ID_JPEGXL,
269
+ AV_CODEC_ID_QOI,
270
+ AV_CODEC_ID_PHM,
271
+ AV_CODEC_ID_RADIANCE_HDR,
272
+ AV_CODEC_ID_WBMP,
273
+ AV_CODEC_ID_MEDIA100,
274
+ AV_CODEC_ID_VQC,
275
+ AV_CODEC_ID_PDV,
276
+ AV_CODEC_ID_EVC,
277
+ AV_CODEC_ID_RTV1,
278
+ AV_CODEC_ID_VMIX,
279
+ AV_CODEC_ID_LEAD,
280
+
281
+ /* various PCM "codecs" */
282
+ AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
283
+ AV_CODEC_ID_PCM_S16LE = 0x10000,
284
+ AV_CODEC_ID_PCM_S16BE,
285
+ AV_CODEC_ID_PCM_U16LE,
286
+ AV_CODEC_ID_PCM_U16BE,
287
+ AV_CODEC_ID_PCM_S8,
288
+ AV_CODEC_ID_PCM_U8,
289
+ AV_CODEC_ID_PCM_MULAW,
290
+ AV_CODEC_ID_PCM_ALAW,
291
+ AV_CODEC_ID_PCM_S32LE,
292
+ AV_CODEC_ID_PCM_S32BE,
293
+ AV_CODEC_ID_PCM_U32LE,
294
+ AV_CODEC_ID_PCM_U32BE,
295
+ AV_CODEC_ID_PCM_S24LE,
296
+ AV_CODEC_ID_PCM_S24BE,
297
+ AV_CODEC_ID_PCM_U24LE,
298
+ AV_CODEC_ID_PCM_U24BE,
299
+ AV_CODEC_ID_PCM_S24DAUD,
300
+ AV_CODEC_ID_PCM_ZORK,
301
+ AV_CODEC_ID_PCM_S16LE_PLANAR,
302
+ AV_CODEC_ID_PCM_DVD,
303
+ AV_CODEC_ID_PCM_F32BE,
304
+ AV_CODEC_ID_PCM_F32LE,
305
+ AV_CODEC_ID_PCM_F64BE,
306
+ AV_CODEC_ID_PCM_F64LE,
307
+ AV_CODEC_ID_PCM_BLURAY,
308
+ AV_CODEC_ID_PCM_LXF,
309
+ AV_CODEC_ID_S302M,
310
+ AV_CODEC_ID_PCM_S8_PLANAR,
311
+ AV_CODEC_ID_PCM_S24LE_PLANAR,
312
+ AV_CODEC_ID_PCM_S32LE_PLANAR,
313
+ AV_CODEC_ID_PCM_S16BE_PLANAR,
314
+ AV_CODEC_ID_PCM_S64LE,
315
+ AV_CODEC_ID_PCM_S64BE,
316
+ AV_CODEC_ID_PCM_F16LE,
317
+ AV_CODEC_ID_PCM_F24LE,
318
+ AV_CODEC_ID_PCM_VIDC,
319
+ AV_CODEC_ID_PCM_SGA,
320
+
321
+ /* various ADPCM codecs */
322
+ AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
323
+ AV_CODEC_ID_ADPCM_IMA_WAV,
324
+ AV_CODEC_ID_ADPCM_IMA_DK3,
325
+ AV_CODEC_ID_ADPCM_IMA_DK4,
326
+ AV_CODEC_ID_ADPCM_IMA_WS,
327
+ AV_CODEC_ID_ADPCM_IMA_SMJPEG,
328
+ AV_CODEC_ID_ADPCM_MS,
329
+ AV_CODEC_ID_ADPCM_4XM,
330
+ AV_CODEC_ID_ADPCM_XA,
331
+ AV_CODEC_ID_ADPCM_ADX,
332
+ AV_CODEC_ID_ADPCM_EA,
333
+ AV_CODEC_ID_ADPCM_G726,
334
+ AV_CODEC_ID_ADPCM_CT,
335
+ AV_CODEC_ID_ADPCM_SWF,
336
+ AV_CODEC_ID_ADPCM_YAMAHA,
337
+ AV_CODEC_ID_ADPCM_SBPRO_4,
338
+ AV_CODEC_ID_ADPCM_SBPRO_3,
339
+ AV_CODEC_ID_ADPCM_SBPRO_2,
340
+ AV_CODEC_ID_ADPCM_THP,
341
+ AV_CODEC_ID_ADPCM_IMA_AMV,
342
+ AV_CODEC_ID_ADPCM_EA_R1,
343
+ AV_CODEC_ID_ADPCM_EA_R3,
344
+ AV_CODEC_ID_ADPCM_EA_R2,
345
+ AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
346
+ AV_CODEC_ID_ADPCM_IMA_EA_EACS,
347
+ AV_CODEC_ID_ADPCM_EA_XAS,
348
+ AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
349
+ AV_CODEC_ID_ADPCM_IMA_ISS,
350
+ AV_CODEC_ID_ADPCM_G722,
351
+ AV_CODEC_ID_ADPCM_IMA_APC,
352
+ AV_CODEC_ID_ADPCM_VIMA,
353
+ AV_CODEC_ID_ADPCM_AFC,
354
+ AV_CODEC_ID_ADPCM_IMA_OKI,
355
+ AV_CODEC_ID_ADPCM_DTK,
356
+ AV_CODEC_ID_ADPCM_IMA_RAD,
357
+ AV_CODEC_ID_ADPCM_G726LE,
358
+ AV_CODEC_ID_ADPCM_THP_LE,
359
+ AV_CODEC_ID_ADPCM_PSX,
360
+ AV_CODEC_ID_ADPCM_AICA,
361
+ AV_CODEC_ID_ADPCM_IMA_DAT4,
362
+ AV_CODEC_ID_ADPCM_MTAF,
363
+ AV_CODEC_ID_ADPCM_AGM,
364
+ AV_CODEC_ID_ADPCM_ARGO,
365
+ AV_CODEC_ID_ADPCM_IMA_SSI,
366
+ AV_CODEC_ID_ADPCM_ZORK,
367
+ AV_CODEC_ID_ADPCM_IMA_APM,
368
+ AV_CODEC_ID_ADPCM_IMA_ALP,
369
+ AV_CODEC_ID_ADPCM_IMA_MTF,
370
+ AV_CODEC_ID_ADPCM_IMA_CUNNING,
371
+ AV_CODEC_ID_ADPCM_IMA_MOFLEX,
372
+ AV_CODEC_ID_ADPCM_IMA_ACORN,
373
+ AV_CODEC_ID_ADPCM_XMD,
374
+
375
+ /* AMR */
376
+ AV_CODEC_ID_AMR_NB = 0x12000,
377
+ AV_CODEC_ID_AMR_WB,
378
+
379
+ /* RealAudio codecs*/
380
+ AV_CODEC_ID_RA_144 = 0x13000,
381
+ AV_CODEC_ID_RA_288,
382
+
383
+ /* various DPCM codecs */
384
+ AV_CODEC_ID_ROQ_DPCM = 0x14000,
385
+ AV_CODEC_ID_INTERPLAY_DPCM,
386
+ AV_CODEC_ID_XAN_DPCM,
387
+ AV_CODEC_ID_SOL_DPCM,
388
+ AV_CODEC_ID_SDX2_DPCM,
389
+ AV_CODEC_ID_GREMLIN_DPCM,
390
+ AV_CODEC_ID_DERF_DPCM,
391
+ AV_CODEC_ID_WADY_DPCM,
392
+ AV_CODEC_ID_CBD2_DPCM,
393
+
394
+ /* audio codecs */
395
+ AV_CODEC_ID_MP2 = 0x15000,
396
+ AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
397
+ AV_CODEC_ID_AAC,
398
+ AV_CODEC_ID_AC3,
399
+ AV_CODEC_ID_DTS,
400
+ AV_CODEC_ID_VORBIS,
401
+ AV_CODEC_ID_DVAUDIO,
402
+ AV_CODEC_ID_WMAV1,
403
+ AV_CODEC_ID_WMAV2,
404
+ AV_CODEC_ID_MACE3,
405
+ AV_CODEC_ID_MACE6,
406
+ AV_CODEC_ID_VMDAUDIO,
407
+ AV_CODEC_ID_FLAC,
408
+ AV_CODEC_ID_MP3ADU,
409
+ AV_CODEC_ID_MP3ON4,
410
+ AV_CODEC_ID_SHORTEN,
411
+ AV_CODEC_ID_ALAC,
412
+ AV_CODEC_ID_WESTWOOD_SND1,
413
+ AV_CODEC_ID_GSM, ///< as in Berlin toast format
414
+ AV_CODEC_ID_QDM2,
415
+ AV_CODEC_ID_COOK,
416
+ AV_CODEC_ID_TRUESPEECH,
417
+ AV_CODEC_ID_TTA,
418
+ AV_CODEC_ID_SMACKAUDIO,
419
+ AV_CODEC_ID_QCELP,
420
+ AV_CODEC_ID_WAVPACK,
421
+ AV_CODEC_ID_DSICINAUDIO,
422
+ AV_CODEC_ID_IMC,
423
+ AV_CODEC_ID_MUSEPACK7,
424
+ AV_CODEC_ID_MLP,
425
+ AV_CODEC_ID_GSM_MS, /* as found in WAV */
426
+ AV_CODEC_ID_ATRAC3,
427
+ AV_CODEC_ID_APE,
428
+ AV_CODEC_ID_NELLYMOSER,
429
+ AV_CODEC_ID_MUSEPACK8,
430
+ AV_CODEC_ID_SPEEX,
431
+ AV_CODEC_ID_WMAVOICE,
432
+ AV_CODEC_ID_WMAPRO,
433
+ AV_CODEC_ID_WMALOSSLESS,
434
+ AV_CODEC_ID_ATRAC3P,
435
+ AV_CODEC_ID_EAC3,
436
+ AV_CODEC_ID_SIPR,
437
+ AV_CODEC_ID_MP1,
438
+ AV_CODEC_ID_TWINVQ,
439
+ AV_CODEC_ID_TRUEHD,
440
+ AV_CODEC_ID_MP4ALS,
441
+ AV_CODEC_ID_ATRAC1,
442
+ AV_CODEC_ID_BINKAUDIO_RDFT,
443
+ AV_CODEC_ID_BINKAUDIO_DCT,
444
+ AV_CODEC_ID_AAC_LATM,
445
+ AV_CODEC_ID_QDMC,
446
+ AV_CODEC_ID_CELT,
447
+ AV_CODEC_ID_G723_1,
448
+ AV_CODEC_ID_G729,
449
+ AV_CODEC_ID_8SVX_EXP,
450
+ AV_CODEC_ID_8SVX_FIB,
451
+ AV_CODEC_ID_BMV_AUDIO,
452
+ AV_CODEC_ID_RALF,
453
+ AV_CODEC_ID_IAC,
454
+ AV_CODEC_ID_ILBC,
455
+ AV_CODEC_ID_OPUS,
456
+ AV_CODEC_ID_COMFORT_NOISE,
457
+ AV_CODEC_ID_TAK,
458
+ AV_CODEC_ID_METASOUND,
459
+ AV_CODEC_ID_PAF_AUDIO,
460
+ AV_CODEC_ID_ON2AVC,
461
+ AV_CODEC_ID_DSS_SP,
462
+ AV_CODEC_ID_CODEC2,
463
+ AV_CODEC_ID_FFWAVESYNTH,
464
+ AV_CODEC_ID_SONIC,
465
+ AV_CODEC_ID_SONIC_LS,
466
+ AV_CODEC_ID_EVRC,
467
+ AV_CODEC_ID_SMV,
468
+ AV_CODEC_ID_DSD_LSBF,
469
+ AV_CODEC_ID_DSD_MSBF,
470
+ AV_CODEC_ID_DSD_LSBF_PLANAR,
471
+ AV_CODEC_ID_DSD_MSBF_PLANAR,
472
+ AV_CODEC_ID_4GV,
473
+ AV_CODEC_ID_INTERPLAY_ACM,
474
+ AV_CODEC_ID_XMA1,
475
+ AV_CODEC_ID_XMA2,
476
+ AV_CODEC_ID_DST,
477
+ AV_CODEC_ID_ATRAC3AL,
478
+ AV_CODEC_ID_ATRAC3PAL,
479
+ AV_CODEC_ID_DOLBY_E,
480
+ AV_CODEC_ID_APTX,
481
+ AV_CODEC_ID_APTX_HD,
482
+ AV_CODEC_ID_SBC,
483
+ AV_CODEC_ID_ATRAC9,
484
+ AV_CODEC_ID_HCOM,
485
+ AV_CODEC_ID_ACELP_KELVIN,
486
+ AV_CODEC_ID_MPEGH_3D_AUDIO,
487
+ AV_CODEC_ID_SIREN,
488
+ AV_CODEC_ID_HCA,
489
+ AV_CODEC_ID_FASTAUDIO,
490
+ AV_CODEC_ID_MSNSIREN,
491
+ AV_CODEC_ID_DFPWM,
492
+ AV_CODEC_ID_BONK,
493
+ AV_CODEC_ID_MISC4,
494
+ AV_CODEC_ID_APAC,
495
+ AV_CODEC_ID_FTR,
496
+ AV_CODEC_ID_WAVARC,
497
+ AV_CODEC_ID_RKA,
498
+ AV_CODEC_ID_AC4,
499
+ AV_CODEC_ID_OSQ,
500
+ AV_CODEC_ID_QOA,
501
+
502
+ /* subtitle codecs */
503
+ AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
504
+ AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
505
+ AV_CODEC_ID_DVB_SUBTITLE,
506
+ AV_CODEC_ID_TEXT, ///< raw UTF-8 text
507
+ AV_CODEC_ID_XSUB,
508
+ AV_CODEC_ID_SSA,
509
+ AV_CODEC_ID_MOV_TEXT,
510
+ AV_CODEC_ID_HDMV_PGS_SUBTITLE,
511
+ AV_CODEC_ID_DVB_TELETEXT,
512
+ AV_CODEC_ID_SRT,
513
+ AV_CODEC_ID_MICRODVD,
514
+ AV_CODEC_ID_EIA_608,
515
+ AV_CODEC_ID_JACOSUB,
516
+ AV_CODEC_ID_SAMI,
517
+ AV_CODEC_ID_REALTEXT,
518
+ AV_CODEC_ID_STL,
519
+ AV_CODEC_ID_SUBVIEWER1,
520
+ AV_CODEC_ID_SUBVIEWER,
521
+ AV_CODEC_ID_SUBRIP,
522
+ AV_CODEC_ID_WEBVTT,
523
+ AV_CODEC_ID_MPL2,
524
+ AV_CODEC_ID_VPLAYER,
525
+ AV_CODEC_ID_PJS,
526
+ AV_CODEC_ID_ASS,
527
+ AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
528
+ AV_CODEC_ID_TTML,
529
+ AV_CODEC_ID_ARIB_CAPTION,
530
+
531
+ /* other specific kind of codecs (generally used for attachments) */
532
+ AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs.
533
+ AV_CODEC_ID_TTF = 0x18000,
534
+
535
+ AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream.
536
+ AV_CODEC_ID_EPG,
537
+ AV_CODEC_ID_BINTEXT,
538
+ AV_CODEC_ID_XBIN,
539
+ AV_CODEC_ID_IDF,
540
+ AV_CODEC_ID_OTF,
541
+ AV_CODEC_ID_SMPTE_KLV,
542
+ AV_CODEC_ID_DVD_NAV,
543
+ AV_CODEC_ID_TIMED_ID3,
544
+ AV_CODEC_ID_BIN_DATA,
545
+ AV_CODEC_ID_SMPTE_2038,
546
+
547
+
548
+ AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
549
+
550
+ AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
551
+ * stream (only used by libavformat) */
552
+ AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
553
+ * stream (only used by libavformat) */
554
+ AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information.
555
+ AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket
556
+ /**
557
+ * Dummy null video codec, useful mainly for development and debugging.
558
+ * Null encoder/decoder discard all input and never return any output.
559
+ */
560
+ AV_CODEC_ID_VNULL,
561
+ /**
562
+ * Dummy null audio codec, useful mainly for development and debugging.
563
+ * Null encoder/decoder discard all input and never return any output.
564
+ */
565
+ AV_CODEC_ID_ANULL,
566
+ };
@@ -0,0 +1,82 @@
1
+ import { AV_PIX_FMT_RGBA, AVMEDIA_TYPE_VIDEO } from "@lng2004/libav.js-variant-webcodecs-avf-with-decoders";
2
+ import LibAV from "@lng2004/libav.js-variant-webcodecs-avf-with-decoders";
3
+
4
+ let libavInstance: Promise<LibAV.LibAV>;
5
+
6
+ // @ts-expect-error
7
+ const isDeno = typeof Deno !== "undefined";
8
+ // @ts-expect-error
9
+ const isBun = typeof Bun !== "undefined";
10
+
11
+ export async function createDecoder(id: number, codecpar: LibAV.CodecParameters)
12
+ {
13
+ if (isDeno || isBun)
14
+ {
15
+ console.error(
16
+ "The decoder currently doesn't work with Deno and Bun, due to " +
17
+ "various issues with Emscripten's pthread support leading to " +
18
+ "crashes. The decoder will not be initialized"
19
+ );
20
+ return null;
21
+ }
22
+ libavInstance ??= LibAV.LibAV({ yesthreads: true });
23
+ let freed = false;
24
+ let serializer: Promise<unknown> | null = null
25
+ const serialize = <T>(f: () => Promise<T>) => {
26
+ let p: Promise<T>;
27
+ if (serializer)
28
+ {
29
+ p = serializer.catch(() => {}).then(() => f());
30
+ }
31
+ else
32
+ {
33
+ p = f();
34
+ }
35
+ serializer = p = p.finally(() => {
36
+ if (serializer === p)
37
+ serializer = null;
38
+ });
39
+ return p;
40
+ }
41
+ const libav = await libavInstance;
42
+ const [, c, pkt, frame] = await libav.ff_init_decoder(id, {
43
+ codecpar
44
+ });
45
+ const { width, height, format } = codecpar;
46
+ const [graph, src_ctx, sink_ctx] = await libav.ff_init_filter_graph(
47
+ "format=pix_fmts=rgba",
48
+ {
49
+ type: AVMEDIA_TYPE_VIDEO,
50
+ width: width ?? 0,
51
+ height: height ?? 0,
52
+ pix_fmt: format ?? 0
53
+ },
54
+ {
55
+ type: AVMEDIA_TYPE_VIDEO,
56
+ width: width ?? 0,
57
+ height: height ?? 0,
58
+ pix_fmt: AV_PIX_FMT_RGBA
59
+ }
60
+ );
61
+ return {
62
+ decode: async (packets: (LibAV.Packet | number)[]) => {
63
+ if (freed)
64
+ return [];
65
+ return serialize(
66
+ () => libav.ff_decode_filter_multi(
67
+ c, src_ctx, sink_ctx, pkt, frame, packets, { ignoreErrors: true }
68
+ )
69
+ )
70
+ },
71
+ free: () => {
72
+ freed = true;
73
+ serialize(() => libav.ff_decode_filter_multi(
74
+ c, src_ctx, sink_ctx, pkt, frame, [], { fin: true, ignoreErrors: true }
75
+ ));
76
+ return serialize(async() => {
77
+ libav.ff_free_decoder(c, pkt, frame);
78
+ libav.avfilter_graph_free_js(graph);
79
+ });
80
+ }
81
+ }
82
+ }