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