Skip to content

Commit d70088f

Browse files
committed
Update CHANGELOG
1 parent 678f7da commit d70088f

File tree

1 file changed

+55
-1
lines changed

1 file changed

+55
-1
lines changed

CHANGELOG.md

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,61 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

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+
for await (const packet of input.packets()) {
33+
await decoder.decode(packet); // null packet at EOF triggers flush
34+
while (true) {
35+
const frame = await decoder.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
46+
47+
#### Decoder/Encoder/FilterAPI/BitStreamFilterAPI - EOF Handling & Manual Flush
48+
49+
- 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.
963

1064
## [5.0.0] - 2025-11-19
1165

0 commit comments

Comments
 (0)