You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+55-1Lines changed: 55 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,61 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
-
## [Unreleased]
8
+
## [5.1.0] - 2026-01-27
9
+
10
+
### Added
11
+
12
+
#### Benchmark Suite
13
+
14
+
New comprehensive benchmark tool for comparing node-av performance against FFmpeg CLI.
15
+
16
+
- Transcode speed benchmarks (software and hardware encoding)
17
+
- Memory usage measurements
18
+
- Latency metrics
19
+
20
+
### Changed
21
+
22
+
#### Threading API - Auto-Detection & Flushing
23
+
24
+
Thread count now defaults to `0` (auto-detect) when not explicitly specified. This allows FFmpeg to automatically determine the optimal number of threads based on the system.
25
+
26
+
**⚠️ Important**: With multi-threaded decoding/encoding, frames are buffered internally and may not be immediately available from `receive()`. Proper flushing is required to retrieve all buffered frames at stream end.
27
+
28
+
**Example:**
29
+
```typescript
30
+
// Using async generators - flushing is handled automatically
31
+
// input.packets() yields null at EOF which flushes the decoder
32
+
forawait (const packet ofinput.packets()) {
33
+
awaitdecoder.decode(packet); // null packet at EOF triggers flush
34
+
while (true) {
35
+
const frame =awaitdecoder.receive();
36
+
if (!frame) break; // EAGAIN - no more frames available yet
37
+
// Process frame...
38
+
}
39
+
}
40
+
```
41
+
42
+
#### BitStreamFilterAPI
43
+
44
+
- Enhanced `setOption()` to support optional filter-specific parameters
45
+
- Allows passing codec-specific options to bitstream filters
- Methods now properly handle `null` frames/packets for explicit EOF signaling
50
+
- Enables manual flushing of internal buffers in encoding/decoding chains
51
+
52
+
### Fixed
53
+
54
+
#### Error Handling
55
+
56
+
-**Muxer Option Validation**: `Muxer` now throws errors when setting invalid options instead of silently failing
57
+
58
+
#### Hardware Detection
59
+
60
+
-**VAAPI Runtime Check**: Added FFmpeg patch for dynamic VAAPI/DRM library loading. Gracefully handles missing libraries instead of crashing.
61
+
62
+
-**HardwareContext.testDecoder()**: Fixed logic bug where hardware types without codec support (like DRM without VAAPI) were incorrectly accepted. Now properly returns `false` when the hardware doesn't support decoding, ensuring `HardwareContext.auto()` only returns functional hardware acceleration.
0 commit comments