MoosicBox Audio Encoder
Basic audio encoding utilities with feature-gated support for multiple formats.
Overview
The MoosicBox Audio Encoder package provides:
- Feature-Gated Modules: Optional encoding support for different audio formats
- Format-Specific Encoders: Separate modules for different encoding formats
- Minimal Core: Lightweight base with optional format extensions
- Encode Info Structure: Basic encoding result information
Current Implementation
Core Components
- EncodeInfo: Structure containing encoding results (output size, input consumed)
- Feature-Gated Modules: Format-specific encoding implementations
Available Features
aac: Advanced Audio Coding encoder moduleflac: Free Lossless Audio Codec encoder modulemp3: MPEG Layer III encoder moduleopus: Opus codec encoder module
Installation
Cargo Dependencies
[]
= { = "../audio_encoder" }
# Enable specific formats
= {
path = "../audio_encoder",
= ["mp3", "flac", "aac", "opus"]
}
Usage
Basic Encode Info
use EncodeInfo;
Format-Specific Encoding
// AAC encoding (requires "aac" feature)
use aac;
// FLAC encoding (requires "flac" feature)
use flac;
// MP3 encoding (requires "mp3" feature)
use mp3;
// Opus encoding (requires "opus" feature)
use opus;
async
Implementation Notes
- The package provides a minimal core with feature-gated format modules
- Each audio format is implemented in its own module behind a feature flag
- The
EncodeInfostruct provides standardized encoding result information - Actual encoding functionality is contained within the format-specific modules
- Features must be explicitly enabled to access format encoders
Features
- Default: Includes only the core
EncodeInfostructure aac: Enables AAC encoding moduleflac: Enables FLAC encoding modulemp3: Enables MP3 encoding moduleopus: Enables Opus encoding module
Development Status
This package currently provides:
- Core Structure:
EncodeInfofor encoding results - Module Framework: Feature-gated organization for different encoders
- Extensible Design: Easy addition of new encoding formats
The actual encoding implementations are contained within the feature-gated modules. Check the individual module documentation for specific encoding capabilities and APIs.
Usage Patterns
// Always available - core types
use EncodeInfo;
// Feature-gated - format-specific encoders
use *;
use *;
This design allows consumers to include only the encoding formats they need, reducing binary size and dependencies.