node-av-light 0.0.0-stage → 7.1.0-beta.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 (311) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +710 -2
  3. package/dist/api/audio-frame-buffer.d.ts +636 -0
  4. package/dist/api/audio-frame-buffer.js +1027 -0
  5. package/dist/api/audio-frame-buffer.js.map +1 -0
  6. package/dist/api/bitstream-filter.d.ts +938 -0
  7. package/dist/api/bitstream-filter.js +1427 -0
  8. package/dist/api/bitstream-filter.js.map +1 -0
  9. package/dist/api/constants.d.ts +44 -0
  10. package/dist/api/constants.js +45 -0
  11. package/dist/api/constants.js.map +1 -0
  12. package/dist/api/data/test_av1.ivf +0 -0
  13. package/dist/api/data/test_h264.h264 +0 -0
  14. package/dist/api/data/test_hevc.h265 +0 -0
  15. package/dist/api/data/test_mjpeg.mjpeg +0 -0
  16. package/dist/api/data/test_vp8.ivf +0 -0
  17. package/dist/api/data/test_vp9.ivf +0 -0
  18. package/dist/api/decoder.d.ts +1413 -0
  19. package/dist/api/decoder.js +2367 -0
  20. package/dist/api/decoder.js.map +1 -0
  21. package/dist/api/demuxer.d.ts +1295 -0
  22. package/dist/api/demuxer.js +2344 -0
  23. package/dist/api/demuxer.js.map +1 -0
  24. package/dist/api/device.d.ts +589 -0
  25. package/dist/api/device.js +964 -0
  26. package/dist/api/device.js.map +1 -0
  27. package/dist/api/encoder-pool.d.ts +262 -0
  28. package/dist/api/encoder-pool.js +397 -0
  29. package/dist/api/encoder-pool.js.map +1 -0
  30. package/dist/api/encoder.d.ts +1509 -0
  31. package/dist/api/encoder.js +2619 -0
  32. package/dist/api/encoder.js.map +1 -0
  33. package/dist/api/filter-complex.d.ts +828 -0
  34. package/dist/api/filter-complex.js +1661 -0
  35. package/dist/api/filter-complex.js.map +1 -0
  36. package/dist/api/filter-presets.d.ts +800 -0
  37. package/dist/api/filter-presets.js +1554 -0
  38. package/dist/api/filter-presets.js.map +1 -0
  39. package/dist/api/filter.d.ts +1339 -0
  40. package/dist/api/filter.js +2075 -0
  41. package/dist/api/filter.js.map +1 -0
  42. package/dist/api/fmp4-stream.d.ts +797 -0
  43. package/dist/api/fmp4-stream.js +1428 -0
  44. package/dist/api/fmp4-stream.js.map +1 -0
  45. package/dist/api/hardware.d.ts +677 -0
  46. package/dist/api/hardware.js +1300 -0
  47. package/dist/api/hardware.js.map +1 -0
  48. package/dist/api/index.d.ts +21 -0
  49. package/dist/api/index.js +38 -0
  50. package/dist/api/index.js.map +1 -0
  51. package/dist/api/io-stream.d.ts +308 -0
  52. package/dist/api/io-stream.js +358 -0
  53. package/dist/api/io-stream.js.map +1 -0
  54. package/dist/api/muxer.d.ts +1311 -0
  55. package/dist/api/muxer.js +2672 -0
  56. package/dist/api/muxer.js.map +1 -0
  57. package/dist/api/pipeline.d.ts +801 -0
  58. package/dist/api/pipeline.js +1344 -0
  59. package/dist/api/pipeline.js.map +1 -0
  60. package/dist/api/probe.d.ts +128 -0
  61. package/dist/api/probe.js +227 -0
  62. package/dist/api/probe.js.map +1 -0
  63. package/dist/api/rtp-stream.d.ts +497 -0
  64. package/dist/api/rtp-stream.js +1131 -0
  65. package/dist/api/rtp-stream.js.map +1 -0
  66. package/dist/api/scaler.d.ts +561 -0
  67. package/dist/api/scaler.js +918 -0
  68. package/dist/api/scaler.js.map +1 -0
  69. package/dist/api/types.d.ts +17 -0
  70. package/dist/api/types.js +2 -0
  71. package/dist/api/types.js.map +1 -0
  72. package/dist/api/utilities/async-queue.d.ts +149 -0
  73. package/dist/api/utilities/async-queue.js +254 -0
  74. package/dist/api/utilities/async-queue.js.map +1 -0
  75. package/dist/api/utilities/audio-sample.d.ts +117 -0
  76. package/dist/api/utilities/audio-sample.js +112 -0
  77. package/dist/api/utilities/audio-sample.js.map +1 -0
  78. package/dist/api/utilities/audio-transcode.d.ts +20 -0
  79. package/dist/api/utilities/audio-transcode.js +27 -0
  80. package/dist/api/utilities/audio-transcode.js.map +1 -0
  81. package/dist/api/utilities/channel-layout.d.ts +76 -0
  82. package/dist/api/utilities/channel-layout.js +80 -0
  83. package/dist/api/utilities/channel-layout.js.map +1 -0
  84. package/dist/api/utilities/codec-format.d.ts +87 -0
  85. package/dist/api/utilities/codec-format.js +117 -0
  86. package/dist/api/utilities/codec-format.js.map +1 -0
  87. package/dist/api/utilities/context-options.d.ts +25 -0
  88. package/dist/api/utilities/context-options.js +23 -0
  89. package/dist/api/utilities/context-options.js.map +1 -0
  90. package/dist/api/utilities/electron-shared-texture.d.ts +368 -0
  91. package/dist/api/utilities/electron-shared-texture.js +540 -0
  92. package/dist/api/utilities/electron-shared-texture.js.map +1 -0
  93. package/dist/api/utilities/image.d.ts +207 -0
  94. package/dist/api/utilities/image.js +213 -0
  95. package/dist/api/utilities/image.js.map +1 -0
  96. package/dist/api/utilities/index.d.ts +14 -0
  97. package/dist/api/utilities/index.js +27 -0
  98. package/dist/api/utilities/index.js.map +1 -0
  99. package/dist/api/utilities/live-decoding.d.ts +15 -0
  100. package/dist/api/utilities/live-decoding.js +32 -0
  101. package/dist/api/utilities/live-decoding.js.map +1 -0
  102. package/dist/api/utilities/media-type.d.ts +49 -0
  103. package/dist/api/utilities/media-type.js +53 -0
  104. package/dist/api/utilities/media-type.js.map +1 -0
  105. package/dist/api/utilities/packet-age-watchdog.d.ts +198 -0
  106. package/dist/api/utilities/packet-age-watchdog.js +594 -0
  107. package/dist/api/utilities/packet-age-watchdog.js.map +1 -0
  108. package/dist/api/utilities/pixel-format.d.ts +89 -0
  109. package/dist/api/utilities/pixel-format.js +97 -0
  110. package/dist/api/utilities/pixel-format.js.map +1 -0
  111. package/dist/api/utilities/sample-format.d.ts +129 -0
  112. package/dist/api/utilities/sample-format.js +141 -0
  113. package/dist/api/utilities/sample-format.js.map +1 -0
  114. package/dist/api/utilities/scale-size.d.ts +51 -0
  115. package/dist/api/utilities/scale-size.js +55 -0
  116. package/dist/api/utilities/scale-size.js.map +1 -0
  117. package/dist/api/utilities/scheduler.d.ts +138 -0
  118. package/dist/api/utilities/scheduler.js +98 -0
  119. package/dist/api/utilities/scheduler.js.map +1 -0
  120. package/dist/api/utilities/streaming.d.ts +186 -0
  121. package/dist/api/utilities/streaming.js +309 -0
  122. package/dist/api/utilities/streaming.js.map +1 -0
  123. package/dist/api/utilities/timestamp.d.ts +193 -0
  124. package/dist/api/utilities/timestamp.js +206 -0
  125. package/dist/api/utilities/timestamp.js.map +1 -0
  126. package/dist/api/utilities/video-transcode.d.ts +218 -0
  127. package/dist/api/utilities/video-transcode.js +624 -0
  128. package/dist/api/utilities/video-transcode.js.map +1 -0
  129. package/dist/api/utilities/whisper-model.d.ts +330 -0
  130. package/dist/api/utilities/whisper-model.js +587 -0
  131. package/dist/api/utilities/whisper-model.js.map +1 -0
  132. package/dist/api/utils.d.ts +19 -0
  133. package/dist/api/utils.js +39 -0
  134. package/dist/api/utils.js.map +1 -0
  135. package/dist/api/webrtc-stream.d.ts +294 -0
  136. package/dist/api/webrtc-stream.js +546 -0
  137. package/dist/api/webrtc-stream.js.map +1 -0
  138. package/dist/api/whisper.d.ts +326 -0
  139. package/dist/api/whisper.js +402 -0
  140. package/dist/api/whisper.js.map +1 -0
  141. package/dist/constants/bsf-options.d.ts +364 -0
  142. package/dist/constants/bsf-options.js +7 -0
  143. package/dist/constants/bsf-options.js.map +1 -0
  144. package/dist/constants/channel-layouts.d.ts +53 -0
  145. package/dist/constants/channel-layouts.js +57 -0
  146. package/dist/constants/channel-layouts.js.map +1 -0
  147. package/dist/constants/constants.d.ts +2435 -0
  148. package/dist/constants/constants.js +1989 -0
  149. package/dist/constants/constants.js.map +1 -0
  150. package/dist/constants/decoders.d.ts +651 -0
  151. package/dist/constants/decoders.js +641 -0
  152. package/dist/constants/decoders.js.map +1 -0
  153. package/dist/constants/encoders.d.ts +314 -0
  154. package/dist/constants/encoders.js +309 -0
  155. package/dist/constants/encoders.js.map +1 -0
  156. package/dist/constants/filter-options.d.ts +12099 -0
  157. package/dist/constants/filter-options.js +7 -0
  158. package/dist/constants/filter-options.js.map +1 -0
  159. package/dist/constants/format-options.d.ts +4319 -0
  160. package/dist/constants/format-options.js +7 -0
  161. package/dist/constants/format-options.js.map +1 -0
  162. package/dist/constants/formats.d.ts +18 -0
  163. package/dist/constants/formats.js +7 -0
  164. package/dist/constants/formats.js.map +1 -0
  165. package/dist/constants/hardware.d.ts +26 -0
  166. package/dist/constants/hardware.js +27 -0
  167. package/dist/constants/hardware.js.map +1 -0
  168. package/dist/constants/index.d.ts +10 -0
  169. package/dist/constants/index.js +6 -0
  170. package/dist/constants/index.js.map +1 -0
  171. package/dist/constants/options.d.ts +6217 -0
  172. package/dist/constants/options.js +7 -0
  173. package/dist/constants/options.js.map +1 -0
  174. package/dist/ffmpeg/index.d.ts +101 -0
  175. package/dist/ffmpeg/index.js +161 -0
  176. package/dist/ffmpeg/index.js.map +1 -0
  177. package/dist/ffmpeg/version.d.ts +6 -0
  178. package/dist/ffmpeg/version.js +7 -0
  179. package/dist/ffmpeg/version.js.map +1 -0
  180. package/dist/index.d.ts +4 -0
  181. package/dist/index.js +9 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/lib/audio-fifo.d.ts +399 -0
  184. package/dist/lib/audio-fifo.js +431 -0
  185. package/dist/lib/audio-fifo.js.map +1 -0
  186. package/dist/lib/binding.d.ts +242 -0
  187. package/dist/lib/binding.js +102 -0
  188. package/dist/lib/binding.js.map +1 -0
  189. package/dist/lib/bitstream-filter-context.d.ts +381 -0
  190. package/dist/lib/bitstream-filter-context.js +443 -0
  191. package/dist/lib/bitstream-filter-context.js.map +1 -0
  192. package/dist/lib/bitstream-filter.d.ts +140 -0
  193. package/dist/lib/bitstream-filter.js +154 -0
  194. package/dist/lib/bitstream-filter.js.map +1 -0
  195. package/dist/lib/codec-context.d.ts +1069 -0
  196. package/dist/lib/codec-context.js +1336 -0
  197. package/dist/lib/codec-context.js.map +1 -0
  198. package/dist/lib/codec-parameters.d.ts +664 -0
  199. package/dist/lib/codec-parameters.js +813 -0
  200. package/dist/lib/codec-parameters.js.map +1 -0
  201. package/dist/lib/codec-parser.d.ts +201 -0
  202. package/dist/lib/codec-parser.js +213 -0
  203. package/dist/lib/codec-parser.js.map +1 -0
  204. package/dist/lib/codec.d.ts +617 -0
  205. package/dist/lib/codec.js +746 -0
  206. package/dist/lib/codec.js.map +1 -0
  207. package/dist/lib/device.d.ts +294 -0
  208. package/dist/lib/device.js +326 -0
  209. package/dist/lib/device.js.map +1 -0
  210. package/dist/lib/dictionary.d.ts +333 -0
  211. package/dist/lib/dictionary.js +372 -0
  212. package/dist/lib/dictionary.js.map +1 -0
  213. package/dist/lib/error.d.ts +311 -0
  214. package/dist/lib/error.js +395 -0
  215. package/dist/lib/error.js.map +1 -0
  216. package/dist/lib/fifo.d.ts +416 -0
  217. package/dist/lib/fifo.js +453 -0
  218. package/dist/lib/fifo.js.map +1 -0
  219. package/dist/lib/filter-context.d.ts +714 -0
  220. package/dist/lib/filter-context.js +783 -0
  221. package/dist/lib/filter-context.js.map +1 -0
  222. package/dist/lib/filter-graph-segment.d.ts +161 -0
  223. package/dist/lib/filter-graph-segment.js +172 -0
  224. package/dist/lib/filter-graph-segment.js.map +1 -0
  225. package/dist/lib/filter-graph.d.ts +641 -0
  226. package/dist/lib/filter-graph.js +704 -0
  227. package/dist/lib/filter-graph.js.map +1 -0
  228. package/dist/lib/filter-inout.d.ts +202 -0
  229. package/dist/lib/filter-inout.js +261 -0
  230. package/dist/lib/filter-inout.js.map +1 -0
  231. package/dist/lib/filter.d.ts +243 -0
  232. package/dist/lib/filter.js +272 -0
  233. package/dist/lib/filter.js.map +1 -0
  234. package/dist/lib/format-context.d.ts +1335 -0
  235. package/dist/lib/format-context.js +1455 -0
  236. package/dist/lib/format-context.js.map +1 -0
  237. package/dist/lib/frame-utils.d.ts +116 -0
  238. package/dist/lib/frame-utils.js +98 -0
  239. package/dist/lib/frame-utils.js.map +1 -0
  240. package/dist/lib/frame.d.ts +1315 -0
  241. package/dist/lib/frame.js +1535 -0
  242. package/dist/lib/frame.js.map +1 -0
  243. package/dist/lib/hardware-device-context.d.ts +362 -0
  244. package/dist/lib/hardware-device-context.js +383 -0
  245. package/dist/lib/hardware-device-context.js.map +1 -0
  246. package/dist/lib/hardware-frames-context.d.ts +418 -0
  247. package/dist/lib/hardware-frames-context.js +471 -0
  248. package/dist/lib/hardware-frames-context.js.map +1 -0
  249. package/dist/lib/index.d.ts +35 -0
  250. package/dist/lib/index.js +60 -0
  251. package/dist/lib/index.js.map +1 -0
  252. package/dist/lib/input-format.d.ts +249 -0
  253. package/dist/lib/input-format.js +306 -0
  254. package/dist/lib/input-format.js.map +1 -0
  255. package/dist/lib/io-context.d.ts +698 -0
  256. package/dist/lib/io-context.js +771 -0
  257. package/dist/lib/io-context.js.map +1 -0
  258. package/dist/lib/log.d.ts +174 -0
  259. package/dist/lib/log.js +184 -0
  260. package/dist/lib/log.js.map +1 -0
  261. package/dist/lib/native-types.d.ts +1024 -0
  262. package/dist/lib/native-types.js +2 -0
  263. package/dist/lib/native-types.js.map +1 -0
  264. package/dist/lib/option.d.ts +953 -0
  265. package/dist/lib/option.js +1607 -0
  266. package/dist/lib/option.js.map +1 -0
  267. package/dist/lib/output-format.d.ts +222 -0
  268. package/dist/lib/output-format.js +259 -0
  269. package/dist/lib/output-format.js.map +1 -0
  270. package/dist/lib/packet.d.ts +521 -0
  271. package/dist/lib/packet.js +613 -0
  272. package/dist/lib/packet.js.map +1 -0
  273. package/dist/lib/rational.d.ts +251 -0
  274. package/dist/lib/rational.js +278 -0
  275. package/dist/lib/rational.js.map +1 -0
  276. package/dist/lib/software-resample-context.d.ts +552 -0
  277. package/dist/lib/software-resample-context.js +592 -0
  278. package/dist/lib/software-resample-context.js.map +1 -0
  279. package/dist/lib/software-scale-context.d.ts +344 -0
  280. package/dist/lib/software-scale-context.js +366 -0
  281. package/dist/lib/software-scale-context.js.map +1 -0
  282. package/dist/lib/stream.d.ts +383 -0
  283. package/dist/lib/stream.js +524 -0
  284. package/dist/lib/stream.js.map +1 -0
  285. package/dist/lib/sync-queue.d.ts +179 -0
  286. package/dist/lib/sync-queue.js +197 -0
  287. package/dist/lib/sync-queue.js.map +1 -0
  288. package/dist/lib/types.d.ts +34 -0
  289. package/dist/lib/types.js +2 -0
  290. package/dist/lib/types.js.map +1 -0
  291. package/dist/lib/utilities.d.ts +1198 -0
  292. package/dist/lib/utilities.js +1302 -0
  293. package/dist/lib/utilities.js.map +1 -0
  294. package/dist/utils/electron.d.ts +49 -0
  295. package/dist/utils/electron.js +63 -0
  296. package/dist/utils/electron.js.map +1 -0
  297. package/dist/utils/index.d.ts +6 -0
  298. package/dist/utils/index.js +7 -0
  299. package/dist/utils/index.js.map +1 -0
  300. package/dist/utils/libc.d.ts +11 -0
  301. package/dist/utils/libc.js +35 -0
  302. package/dist/utils/libc.js.map +1 -0
  303. package/dist/utils/variant.d.ts +26 -0
  304. package/dist/utils/variant.js +31 -0
  305. package/dist/utils/variant.js.map +1 -0
  306. package/dist/webrtc/index.d.ts +4 -0
  307. package/dist/webrtc/index.js +7 -0
  308. package/dist/webrtc/index.js.map +1 -0
  309. package/install/check.js +124 -0
  310. package/install/ffmpeg.js +66 -0
  311. package/package.json +167 -4
@@ -0,0 +1,521 @@
1
+ import { Rational } from './rational.js';
2
+ import type { AVPacketFlag, AVPacketSideDataType } from '../constants/constants.js';
3
+ import type { NativePacket, NativeWrapper } from './native-types.js';
4
+ import type { IRational } from './types.js';
5
+ /**
6
+ * Container for compressed audio/video data.
7
+ *
8
+ * Stores encoded data from demuxers or to be sent to muxers. Each packet contains
9
+ * a portion of compressed stream data, typically one video frame or several audio frames.
10
+ * Includes timing information (PTS/DTS), stream index, and flags. Essential for
11
+ * demuxing, muxing, and codec operations.
12
+ *
13
+ * Direct mapping to FFmpeg's AVPacket.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { Packet, FFmpegError } from 'node-av';
18
+ * import { AV_PKT_FLAG_KEY } from 'node-av/constants';
19
+ *
20
+ * // Create and allocate packet
21
+ * const packet = new Packet();
22
+ * packet.alloc();
23
+ *
24
+ * // Read packet from format context
25
+ * const ret = await formatContext.readFrame(packet);
26
+ * FFmpegError.throwIfError(ret, 'readFrame');
27
+ *
28
+ * // Check packet properties
29
+ * console.log(`Stream: ${packet.streamIndex}`);
30
+ * console.log(`PTS: ${packet.pts}`);
31
+ * console.log(`Size: ${packet.size} bytes`);
32
+ * console.log(`Keyframe: ${packet.isKeyframe}`);
33
+ *
34
+ * // Send to decoder
35
+ * const ret2 = await codecContext.sendPacket(packet);
36
+ * FFmpegError.throwIfError(ret2, 'sendPacket');
37
+ *
38
+ * // Cleanup
39
+ * packet.unref();
40
+ * ```
41
+ *
42
+ * @see [AVPacket](https://ffmpeg.org/doxygen/trunk/structAVPacket.html) - FFmpeg Doxygen
43
+ * @see {@link FormatContext} For reading/writing packets
44
+ * @see {@link CodecContext} For encoding/decoding packets
45
+ */
46
+ export declare class Packet implements Disposable, NativeWrapper<NativePacket> {
47
+ private native;
48
+ constructor();
49
+ /**
50
+ * Stream index this packet belongs to.
51
+ *
52
+ * Identifies which stream in a format context this packet is from/for.
53
+ * Set automatically when reading, must be set manually when writing.
54
+ *
55
+ * Direct mapping to AVPacket->stream_index.
56
+ */
57
+ get streamIndex(): number;
58
+ set streamIndex(value: number);
59
+ /**
60
+ * Presentation timestamp.
61
+ *
62
+ * Time when the decompressed packet should be presented to the user.
63
+ * In stream time base units. AV_NOPTS_VALUE if unknown.
64
+ *
65
+ * Direct mapping to AVPacket->pts.
66
+ */
67
+ get pts(): bigint;
68
+ set pts(value: bigint);
69
+ /**
70
+ * Decompression timestamp.
71
+ *
72
+ * Time when the packet should be decompressed.
73
+ * In stream time base units. AV_NOPTS_VALUE if unknown.
74
+ *
75
+ * Direct mapping to AVPacket->dts.
76
+ */
77
+ get dts(): bigint;
78
+ set dts(value: bigint);
79
+ /**
80
+ * Duration of this packet.
81
+ *
82
+ * Duration in stream time base units, 0 if unknown.
83
+ * Typically equal to next_pts - this_pts.
84
+ *
85
+ * Direct mapping to AVPacket->duration.
86
+ */
87
+ get duration(): bigint;
88
+ set duration(value: bigint);
89
+ /**
90
+ * Timebase for timestamps in this packet.
91
+ *
92
+ * Used by av_interleaved_write_frame() to correctly sort packets from different streams.
93
+ * Must be set to the output stream's timebase before calling av_interleaved_write_frame().
94
+ *
95
+ * Direct mapping to AVPacket->time_base.
96
+ */
97
+ get timeBase(): Rational;
98
+ set timeBase(value: IRational);
99
+ /**
100
+ * Byte position in stream.
101
+ *
102
+ * Byte position of packet data in the input file.
103
+ * -1 if unknown.
104
+ *
105
+ * Direct mapping to AVPacket->pos.
106
+ */
107
+ get pos(): bigint;
108
+ set pos(value: bigint);
109
+ /**
110
+ * Size of packet data in bytes.
111
+ *
112
+ * Direct mapping to AVPacket->size.
113
+ */
114
+ get size(): number;
115
+ /**
116
+ * Bytes of native payload this packet currently reports to V8's GC via
117
+ * `napi_adjust_external_memory`. Exposed only so the accounting can be
118
+ * asserted in tests; the value is not observable through V8 heap statistics.
119
+ *
120
+ * @internal
121
+ */
122
+ get reportedExternalMemory(): number;
123
+ /**
124
+ * Packet flags.
125
+ *
126
+ * Combination of AV_PKT_FLAG values indicating packet properties
127
+ * (e.g., AV_PKT_FLAG_KEY for keyframes).
128
+ *
129
+ * Direct mapping to AVPacket->flags.
130
+ */
131
+ get flags(): AVPacketFlag;
132
+ set flags(value: AVPacketFlag);
133
+ /**
134
+ * Packet data buffer.
135
+ *
136
+ * Contains the compressed audio/video data.
137
+ * May be null for packets signaling special conditions.
138
+ *
139
+ * Assigning a Buffer replaces the payload with a copy of it; assigning null
140
+ * clears the payload. Either assignment drops any attached side data but
141
+ * preserves the packet's metadata (pts, dts, duration, pos, streamIndex,
142
+ * flags, timeBase), so assignment order does not matter.
143
+ *
144
+ * Direct mapping to AVPacket->data.
145
+ */
146
+ get data(): Buffer | null;
147
+ set data(value: Buffer | null);
148
+ /**
149
+ * Check if packet contains a keyframe.
150
+ *
151
+ * Convenience property that checks AV_PKT_FLAG_KEY flag.
152
+ * Keyframes can be decoded independently without reference frames.
153
+ */
154
+ get isKeyframe(): boolean;
155
+ set isKeyframe(value: boolean);
156
+ /**
157
+ * Allocate a new packet.
158
+ *
159
+ * Allocates the packet structure. Must be called before using the packet
160
+ * unless it was created by another function (e.g., clone()).
161
+ *
162
+ * Direct mapping to av_packet_alloc().
163
+ *
164
+ * @throws {Error} If allocation fails (ENOMEM)
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const packet = new Packet();
169
+ * packet.alloc();
170
+ * // Packet is now ready for use
171
+ * ```
172
+ *
173
+ * @see {@link free} To deallocate the packet
174
+ */
175
+ alloc(): void;
176
+ /**
177
+ * Free the packet.
178
+ *
179
+ * Deallocates the packet and its data. The packet becomes invalid after this.
180
+ *
181
+ * Direct mapping to av_packet_free().
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * packet.free();
186
+ * // Packet is now invalid
187
+ * ```
188
+ *
189
+ * @see {@link unref} To only free data, keeping structure
190
+ */
191
+ free(): void;
192
+ /**
193
+ * Create a reference to another packet.
194
+ *
195
+ * Sets up this packet as a reference to the source packet's data.
196
+ * Both packets will share the same data buffer.
197
+ *
198
+ * Direct mapping to av_packet_ref().
199
+ *
200
+ * IMPORTANT: per FFmpeg's contract, this packet (the destination) is completely
201
+ * overwritten - it MUST be unreferenced or freshly allocated before calling.
202
+ * Re-using a packet as the destination without {@link unref} first leaks its
203
+ * previous buffer and side data. When reusing one packet across a loop, call
204
+ * `packet.unref()` before each `packet.ref(src)`.
205
+ *
206
+ * @param src - Source packet to reference
207
+ *
208
+ * @returns 0 on success, negative AVERROR on error:
209
+ * - AVERROR_ENOMEM: Memory allocation failure
210
+ * - AVERROR_EINVAL: Invalid parameters
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * import { FFmpegError } from 'node-av';
215
+ *
216
+ * // Reusing one packet across a loop: unref before re-referencing.
217
+ * packet2.unref();
218
+ * const ret = packet2.ref(packet1);
219
+ * FFmpegError.throwIfError(ret, 'ref');
220
+ * // packet2 now references packet1's data
221
+ * ```
222
+ *
223
+ * @see {@link unref} To remove reference (call before re-referencing a reused packet)
224
+ * @see {@link clone} To create independent copy
225
+ */
226
+ ref(src: Packet): number;
227
+ /**
228
+ * Unreference the packet.
229
+ *
230
+ * Frees the packet data if this was the last reference.
231
+ * The packet structure remains allocated and can be reused.
232
+ *
233
+ * Direct mapping to av_packet_unref().
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * packet.unref();
238
+ * // Packet data is freed, structure can be reused
239
+ * ```
240
+ *
241
+ * @see {@link ref} To create reference
242
+ * @see {@link free} To free everything
243
+ */
244
+ unref(): void;
245
+ /**
246
+ * Clone the packet.
247
+ *
248
+ * Creates an independent copy of the packet with its own data buffer.
249
+ * The new packet has the same content but can be modified independently.
250
+ *
251
+ * Direct mapping to av_packet_clone().
252
+ *
253
+ * @returns New packet instance, or null on allocation failure
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * const copy = packet.clone();
258
+ * if (copy) {
259
+ * // Modify copy without affecting original
260
+ * copy.pts = packet.pts + 1000n;
261
+ * }
262
+ * ```
263
+ *
264
+ * @see {@link ref} To create reference instead of copy
265
+ */
266
+ clone(): Packet | null;
267
+ /**
268
+ * Rescale packet timestamps.
269
+ *
270
+ * Converts PTS, DTS, and duration from one time base to another.
271
+ * Essential when moving packets between streams with different time bases.
272
+ *
273
+ * Direct mapping to av_packet_rescale_ts().
274
+ *
275
+ * @param srcTimebase - Source time base
276
+ *
277
+ * @param dstTimebase - Destination time base
278
+ *
279
+ * @example
280
+ * ```typescript
281
+ * import { Rational } from 'node-av';
282
+ *
283
+ * // Convert from 1/25 fps to 1/1000 (milliseconds)
284
+ * const src = new Rational(1, 25);
285
+ * const dst = new Rational(1, 1000);
286
+ * packet.rescaleTs(src, dst);
287
+ * ```
288
+ */
289
+ rescaleTs(srcTimebase: IRational, dstTimebase: IRational): void;
290
+ /**
291
+ * Ensure packet data is reference counted.
292
+ *
293
+ * Makes sure the packet data is stored in a reference-counted buffer.
294
+ * If not already reference-counted, allocates a new buffer and copies data.
295
+ *
296
+ * Direct mapping to av_packet_make_refcounted().
297
+ *
298
+ * @returns 0 on success, negative AVERROR on error:
299
+ * - AVERROR_ENOMEM: Memory allocation failure
300
+ * - AVERROR_EINVAL: Invalid packet
301
+ *
302
+ * @example
303
+ * ```typescript
304
+ * import { FFmpegError } from 'node-av';
305
+ *
306
+ * const ret = packet.makeRefcounted();
307
+ * FFmpegError.throwIfError(ret, 'makeRefcounted');
308
+ * ```
309
+ */
310
+ makeRefcounted(): number;
311
+ /**
312
+ * Ensure packet data is writable.
313
+ *
314
+ * Creates a private copy of the data if it's shared with other packets.
315
+ * Call before modifying packet data to avoid affecting other references.
316
+ *
317
+ * Direct mapping to av_packet_make_writable().
318
+ *
319
+ * @returns 0 on success, negative AVERROR on error:
320
+ * - AVERROR_ENOMEM: Memory allocation failure
321
+ * - AVERROR_EINVAL: Invalid packet
322
+ *
323
+ * @example
324
+ * ```typescript
325
+ * import { FFmpegError } from 'node-av';
326
+ *
327
+ * // Ensure we can safely modify data
328
+ * const ret = packet.makeWritable();
329
+ * FFmpegError.throwIfError(ret, 'makeWritable');
330
+ * // Now safe to modify packet.data
331
+ * ```
332
+ */
333
+ makeWritable(): number;
334
+ /**
335
+ * Get packet side data.
336
+ *
337
+ * Retrieves additional data associated with the packet
338
+ * (e.g., palette data, quality stats, encryption info).
339
+ *
340
+ * Direct mapping to av_packet_get_side_data().
341
+ *
342
+ * @param type - Type of side data to retrieve
343
+ *
344
+ * @returns Side data buffer, or null if not present
345
+ *
346
+ * @example
347
+ * ```typescript
348
+ * import { AV_PKT_DATA_PALETTE } from 'node-av/constants';
349
+ *
350
+ * const palette = packet.getSideData(AV_PKT_DATA_PALETTE);
351
+ * if (palette) {
352
+ * console.log(`Palette size: ${palette.length} bytes`);
353
+ * }
354
+ * ```
355
+ *
356
+ * @see {@link addSideData} To add side data
357
+ * @see {@link newSideData} To allocate new side data
358
+ */
359
+ getSideData(type: AVPacketSideDataType): Buffer | null;
360
+ /**
361
+ * Add side data to packet.
362
+ *
363
+ * Attaches additional data to the packet. The data is copied.
364
+ *
365
+ * Direct mapping to av_packet_add_side_data().
366
+ *
367
+ * @param type - Type of side data
368
+ *
369
+ * @param data - Side data buffer
370
+ *
371
+ * @returns 0 on success, negative AVERROR on error:
372
+ * - AVERROR_ENOMEM: Memory allocation failure
373
+ * - AVERROR_EINVAL: Invalid parameters
374
+ *
375
+ * @example
376
+ * ```typescript
377
+ * import { FFmpegError } from 'node-av';
378
+ * import { AV_PKT_DATA_NEW_EXTRADATA } from 'node-av/constants';
379
+ *
380
+ * const extradata = Buffer.from([...]);
381
+ * const ret = packet.addSideData(AV_PKT_DATA_NEW_EXTRADATA, extradata);
382
+ * FFmpegError.throwIfError(ret, 'addSideData');
383
+ * ```
384
+ *
385
+ * @see {@link getSideData} To retrieve side data
386
+ * @see {@link newSideData} To allocate in-place
387
+ */
388
+ addSideData(type: AVPacketSideDataType, data: Buffer): number;
389
+ /**
390
+ * Allocate new side data.
391
+ *
392
+ * Allocates side data buffer attached to the packet.
393
+ * Returns buffer that can be written to directly.
394
+ *
395
+ * Direct mapping to av_packet_new_side_data().
396
+ *
397
+ * @param type - Type of side data
398
+ *
399
+ * @param size - Size in bytes to allocate
400
+ *
401
+ * @returns Allocated buffer for writing
402
+ *
403
+ * @throws {Error} If allocation fails
404
+ *
405
+ * @example
406
+ * ```typescript
407
+ * import { AV_PKT_DATA_NEW_EXTRADATA } from 'node-av/constants';
408
+ *
409
+ * // Allocate and write side data directly
410
+ * const sideData = packet.newSideData(AV_PKT_DATA_NEW_EXTRADATA, 16);
411
+ * sideData.writeUInt32LE(0x12345678, 0);
412
+ * ```
413
+ *
414
+ * @see {@link getSideData} To retrieve side data
415
+ * @see {@link addSideData} To add existing buffer
416
+ */
417
+ newSideData(type: AVPacketSideDataType, size: number): Buffer;
418
+ /**
419
+ * Free all side data.
420
+ *
421
+ * Removes all side data attached to the packet.
422
+ *
423
+ * Direct mapping to av_packet_free_side_data().
424
+ *
425
+ * @example
426
+ * ```typescript
427
+ * packet.freeSideData();
428
+ * // All side data removed
429
+ * ```
430
+ */
431
+ freeSideData(): void;
432
+ /**
433
+ * Set packet flags.
434
+ *
435
+ * Sets one or more flags using bitwise OR. Allows setting multiple flags
436
+ * without manually performing bitwise operations.
437
+ *
438
+ * @param flags - One or more flag values to set
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * import { AV_PKT_FLAG_KEY, AV_PKT_FLAG_DISCARD } from 'node-av/constants';
443
+ *
444
+ * // Set multiple flags at once
445
+ * packet.setFlags(AV_PKT_FLAG_KEY, AV_PKT_FLAG_DISCARD);
446
+ * ```
447
+ *
448
+ * @see {@link clearFlags} To unset flags
449
+ * @see {@link hasFlags} To check flags
450
+ * @see {@link flags} For direct flag access
451
+ */
452
+ setFlags(...flags: AVPacketFlag[]): void;
453
+ /**
454
+ * Clear packet flags.
455
+ *
456
+ * Clears one or more flags using bitwise AND NOT. Allows clearing multiple
457
+ * flags without manually performing bitwise operations.
458
+ *
459
+ * @param flags - One or more flag values to clear
460
+ *
461
+ * @example
462
+ * ```typescript
463
+ * import { AV_PKT_FLAG_DISCARD } from 'node-av/constants';
464
+ *
465
+ * // Clear specific flag
466
+ * packet.clearFlags(AV_PKT_FLAG_DISCARD);
467
+ * ```
468
+ *
469
+ * @see {@link setFlags} To set flags
470
+ * @see {@link hasFlags} To check flags
471
+ * @see {@link flags} For direct flag access
472
+ */
473
+ clearFlags(...flags: AVPacketFlag[]): void;
474
+ /**
475
+ * Check if packet has specific flags.
476
+ *
477
+ * Tests whether all specified flags are set using bitwise AND.
478
+ *
479
+ * @param flags - One or more flag values to check
480
+ *
481
+ * @returns true if all specified flags are set, false otherwise
482
+ *
483
+ * @example
484
+ * ```typescript
485
+ * import { AV_PKT_FLAG_KEY } from 'node-av/constants';
486
+ *
487
+ * if (packet.hasFlags(AV_PKT_FLAG_KEY)) {
488
+ * console.log('This is a keyframe packet');
489
+ * }
490
+ * ```
491
+ *
492
+ * @see {@link setFlags} To set flags
493
+ * @see {@link clearFlags} To unset flags
494
+ * @see {@link flags} For direct flag access
495
+ */
496
+ hasFlags(...flags: AVPacketFlag[]): boolean;
497
+ /**
498
+ * Get the underlying native Packet object.
499
+ *
500
+ * @returns The native Packet binding object
501
+ *
502
+ * @internal
503
+ */
504
+ getNative(): NativePacket;
505
+ /**
506
+ * Dispose of the packet.
507
+ *
508
+ * Implements the Disposable interface for automatic cleanup.
509
+ * Equivalent to calling free().
510
+ *
511
+ * @example
512
+ * ```typescript
513
+ * {
514
+ * using packet = new Packet();
515
+ * packet.alloc();
516
+ * // Use packet...
517
+ * } // Automatically freed when leaving scope
518
+ * ```
519
+ */
520
+ [Symbol.dispose](): void;
521
+ }