Release v1.3.6-beta.6
Pre-release
Pre-release
·
8 commits
to main
since this release
What's Changed in v1.3.6-beta.6
⚡ Pragmatische Hot-Path Optimierungen (RTSP & Audio)
- Zero-Allocation Socket-Lesepuffer (
pkg/rtsp/interceptor.go):- Einführung eines festen 4-KB-Lesepuffers (
readBuf [4096]byte) auf deminterceptingConn-Struct. - Vollständige Eliminierung dynamischer
make([]byte, 4096)Allokationen bei jedem einzelnen TCP-Read im RTSP-Stream. - Schneller Puffer-Reset (
c.rBuf = c.rBuf[:0]) verhindert unbegrenztes Neuallokieren des Slices im Dauerbetrieb. - Benchmark:
BenchmarkInterceptingConnReadbestätigt 743 ns/op und 0 Allokationen pro Socket-Read.
- Einführung eines festen 4-KB-Lesepuffers (
- Wiederverwendbarer PCM-Reader & Puffer-Kompaktierung (
pkg/audio/transcoder.go):- Persistentes
pcmReader bytes.Readerauf demTranscoder-Struct analog zuadtsBuf. t.pcmReader.Reset(chunk)eliminiertbytes.NewReader(chunk)auf jedem einzelnen AAC-Frame (50x/Sekunde).- Shifting/Kompaktierung unkodierter PCM-Bytes verhindert Fragmentierung und Speicherwachstum im Puffer.
- Benchmark:
BenchmarkTranscoderProcessPCMUbestätigt 5.9 µs/op.
- Persistentes
- 100 % Erhalt der Code-Klarheit & Erweiterbarkeit:
- Alle modularen Schnittstellen (
DecodePCMU->Resample8kTo16k->EncodeAAC) bleiben unverändert erhalten, um zukünftige Codecs (z. B. Opus) oder neue Kameramodelle isoliert anbinden zu können.
- Alle modularen Schnittstellen (
Full Changelog: v1.3.6-beta.5...v1.3.6-beta.6