🎉 live server seems to be working now
This commit is contained in:
192
third_party/sendspin-go/CHANGELOG.md
vendored
Normal file
192
third_party/sendspin-go/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.9.0] - 2025-10-25
|
||||
|
||||
### Added
|
||||
|
||||
**Library-First Architecture**
|
||||
- Complete restructure from CLI-focused to library-first design
|
||||
- Three-tier architecture: high-level convenience API, component APIs, and private implementation
|
||||
- Comprehensive public API in `pkg/` for library consumers
|
||||
- CLI tools reimplemented as thin wrappers using the public library
|
||||
|
||||
**Public API Packages**
|
||||
|
||||
- `pkg/sendspin` - High-level Player and Server APIs for most use cases
|
||||
- `Player` - Connect to servers and play synchronized audio with volume control, callbacks
|
||||
- `Server` - Serve audio to multiple clients with custom source support
|
||||
- `AudioSource` - Interface for custom audio sources
|
||||
- `FileSource()` - Read audio from FLAC, MP3, WAV files
|
||||
- `TestToneSource()` - Generate test tones for debugging
|
||||
|
||||
- `pkg/audio` - Core audio types and utilities
|
||||
- `Format` - Audio stream format descriptor (codec, sample rate, channels, bit depth)
|
||||
- `Buffer` - Decoded PCM audio with timestamp information
|
||||
- Sample conversion functions for 16-bit and 24-bit audio
|
||||
|
||||
- `pkg/audio/decode` - Audio decoders for multiple codecs
|
||||
- `Decoder` - Common interface for all decoders
|
||||
- PCM decoder - 16-bit and 24-bit support
|
||||
- Opus decoder - with int16 to int32 conversion
|
||||
- FLAC decoder - stub for future implementation
|
||||
- MP3 decoder - with int16 to int32 conversion
|
||||
|
||||
- `pkg/audio/encode` - Audio encoders
|
||||
- `Encoder` - Common interface for all encoders
|
||||
- PCM encoder - 16-bit and 24-bit support
|
||||
- Opus encoder - with int32 to int16 conversion
|
||||
|
||||
- `pkg/audio/resample` - Sample rate conversion
|
||||
- Linear interpolation resampler
|
||||
- Support for upsampling and downsampling
|
||||
- Multi-channel support
|
||||
|
||||
- `pkg/audio/output` - Audio playback interfaces
|
||||
- `Output` - Common interface for playback backends
|
||||
- PortAudio implementation for cross-platform audio
|
||||
|
||||
- `pkg/protocol` - Sendspin wire protocol
|
||||
- Message types for client/server communication
|
||||
- WebSocket client implementation
|
||||
- Protocol version negotiation
|
||||
|
||||
- `pkg/sync` - Clock synchronization
|
||||
- NTP-style clock sync with Sendspin servers
|
||||
- Round-trip time measurement
|
||||
- Quality tracking for sync accuracy
|
||||
|
||||
- `pkg/discovery` - mDNS service discovery
|
||||
- Discover Sendspin servers on local network
|
||||
- Advertise server availability
|
||||
- Service registration and browsing
|
||||
|
||||
**Examples**
|
||||
- `examples/basic-player` - Simple audio player example
|
||||
- `examples/basic-server` - Simple audio server example
|
||||
- `examples/custom-source` - Custom audio source implementation
|
||||
|
||||
**Documentation**
|
||||
- Comprehensive godoc comments for all public types and functions
|
||||
- Package-level documentation for each public package
|
||||
- Examples in README demonstrating library usage
|
||||
- Complete refactoring design document
|
||||
|
||||
**Testing**
|
||||
- 180+ tests covering all public APIs
|
||||
- Integration tests for Player and Server
|
||||
- Unit tests for audio processing components
|
||||
- Codec-specific tests for encoders and decoders
|
||||
|
||||
### Changed
|
||||
|
||||
**Breaking Changes**
|
||||
- CLI tools now use public library APIs instead of internal implementations
|
||||
- Internal packages moved to `pkg/` for public consumption
|
||||
- Audio processing now consistently uses int32 samples in 24-bit range
|
||||
|
||||
**Architecture**
|
||||
- Player CLI (`sendspin-player`) - Thin wrapper around `pkg/sendspin.Player`
|
||||
- Server CLI (`sendspin-server`) - Thin wrapper around `pkg/sendspin.Server`
|
||||
- All audio processing moved to reusable public packages
|
||||
- Clean separation between library code and CLI code
|
||||
|
||||
### Fixed
|
||||
- Consistent sample format across all audio processing components
|
||||
- Proper resource cleanup in decoders and encoders
|
||||
- Thread-safe clock synchronization
|
||||
- Robust error handling in all public APIs
|
||||
|
||||
### Technical Details
|
||||
|
||||
**Audio Pipeline**
|
||||
- All decoders output int32 samples in 24-bit range for consistent hi-res audio
|
||||
- All encoders accept int32 samples and convert as needed for codec
|
||||
- Resampler uses linear interpolation for quality upsampling/downsampling
|
||||
- PortAudio output converts int32 to int16 for playback
|
||||
|
||||
**Wire Protocol**
|
||||
- WebSocket-based streaming with binary audio frames
|
||||
- Clock sync messages for precise timing
|
||||
- Metadata messages for track information
|
||||
- Client state messages for monitoring
|
||||
|
||||
**Clock Synchronization**
|
||||
- NTP-style round-trip time measurement
|
||||
- Multiple sync samples for accuracy
|
||||
- Quality tracking and bad sample rejection
|
||||
- Thread-safe concurrent access
|
||||
|
||||
**Service Discovery**
|
||||
- mDNS-based server discovery
|
||||
- Automatic service registration
|
||||
- Server name and capability advertising
|
||||
|
||||
### Migration Guide
|
||||
|
||||
For users of pre-1.0.0 versions, the library API is now the recommended way to use Sendspin:
|
||||
|
||||
**Old (Internal API):**
|
||||
```go
|
||||
// Not recommended - internal packages
|
||||
import "github.com/Sendspin/sendspin-go/internal/player"
|
||||
```
|
||||
|
||||
**New (Public API):**
|
||||
```go
|
||||
// Recommended - public library API
|
||||
import "github.com/Sendspin/sendspin-go/pkg/sendspin"
|
||||
|
||||
player, err := sendspin.NewPlayer(sendspin.PlayerConfig{
|
||||
ServerAddr: "localhost:8927",
|
||||
PlayerName: "Living Room",
|
||||
Volume: 80,
|
||||
})
|
||||
```
|
||||
|
||||
### Version Information
|
||||
- Go 1.23+
|
||||
- Supports hi-res audio up to 192kHz/24-bit
|
||||
- Cross-platform: macOS, Linux, Windows
|
||||
- Architecture: x86_64, ARM64
|
||||
|
||||
---
|
||||
|
||||
## [0.3.0] - 2025-10-24
|
||||
|
||||
### Added
|
||||
- Hi-res audio support up to 192kHz/24-bit
|
||||
- Multi-source audio support
|
||||
- Server TUI with real-time client monitoring
|
||||
- Comprehensive server and player documentation
|
||||
|
||||
### Fixed
|
||||
- Audio timing and distortion issues
|
||||
- Buffer management improvements
|
||||
- Clock synchronization accuracy
|
||||
|
||||
---
|
||||
|
||||
## [0.2.0] - 2025-10-20
|
||||
|
||||
### Added
|
||||
- Basic player and server functionality
|
||||
- Clock synchronization
|
||||
- mDNS discovery
|
||||
- TUI for player
|
||||
|
||||
### Changed
|
||||
- Initial implementation
|
||||
|
||||
---
|
||||
|
||||
## [0.1.0] - 2025-10-15
|
||||
|
||||
### Added
|
||||
- Initial project structure
|
||||
- Basic audio streaming
|
||||
- WebSocket protocol
|
||||
Reference in New Issue
Block a user