mirror of https://github.com/jetkvm/kvm.git
perf(audio): optimize audio config for RV1106 SoC compatibility
Adjust bitrates, frame sizes, and OPUS parameters to balance quality and performance on RV1106. Reduce channel count for low quality to minimize CPU load. Update CGO constants for better memory efficiency.
This commit is contained in:
parent
9c0aff4489
commit
858859e317
|
@ -1554,35 +1554,36 @@ func DefaultAudioConfig() *AudioConfigConstants {
|
||||||
FrameSize: 960,
|
FrameSize: 960,
|
||||||
MaxPacketSize: 4000,
|
MaxPacketSize: 4000,
|
||||||
|
|
||||||
// Audio Quality Bitrates
|
// Audio Quality Bitrates - Optimized for RV1106 SoC and KVM layer compatibility
|
||||||
|
// Low quality increased to 48/24 kbps for better audio quality while maintaining efficiency
|
||||||
AudioQualityLowOutputBitrate: 48,
|
AudioQualityLowOutputBitrate: 48,
|
||||||
AudioQualityLowInputBitrate: 24,
|
AudioQualityLowInputBitrate: 24,
|
||||||
AudioQualityMediumOutputBitrate: 80,
|
AudioQualityMediumOutputBitrate: 64,
|
||||||
AudioQualityMediumInputBitrate: 40,
|
AudioQualityMediumInputBitrate: 32,
|
||||||
|
|
||||||
// AudioQualityHighOutputBitrate defines bitrate for high-quality output.
|
// AudioQualityHighOutputBitrate defines bitrate for high-quality output.
|
||||||
// Used in: Professional applications requiring excellent audio fidelity
|
// Used in: Professional applications requiring good audio fidelity on RV1106
|
||||||
// Impact: Provides excellent quality but increases bandwidth usage.
|
// Impact: Balanced quality optimized for single-core ARM performance.
|
||||||
// Default 128kbps matches professional Opus encoding standards.
|
// Reduced to 96kbps for RV1106 compatibility and KVM layer stability.
|
||||||
AudioQualityHighOutputBitrate: 128,
|
AudioQualityHighOutputBitrate: 96,
|
||||||
|
|
||||||
// AudioQualityHighInputBitrate defines bitrate for high-quality input.
|
// AudioQualityHighInputBitrate defines bitrate for high-quality input.
|
||||||
// Used in: High-quality microphone input for professional use
|
// Used in: High-quality microphone input optimized for RV1106
|
||||||
// Impact: Ensures clear voice reproduction for professional scenarios.
|
// Impact: Clear voice reproduction without overwhelming single-core CPU.
|
||||||
// Default 64kbps provides excellent voice quality.
|
// Reduced to 48kbps for optimal RV1106 performance.
|
||||||
AudioQualityHighInputBitrate: 64,
|
AudioQualityHighInputBitrate: 48,
|
||||||
|
|
||||||
// AudioQualityUltraOutputBitrate defines bitrate for ultra-quality output.
|
// AudioQualityUltraOutputBitrate defines bitrate for ultra-quality output.
|
||||||
// Used in: High-quality reproduction with optimized resource usage
|
// Used in: Maximum quality while ensuring RV1106 stability
|
||||||
// Impact: Excellent quality while maintaining system stability.
|
// Impact: Best possible quality without interfering with KVM operations.
|
||||||
// Default 160kbps provides excellent audio quality with reduced CPU load.
|
// Optimized to 128kbps for RV1106 maximum performance threshold.
|
||||||
AudioQualityUltraOutputBitrate: 160,
|
AudioQualityUltraOutputBitrate: 128,
|
||||||
|
|
||||||
// AudioQualityUltraInputBitrate defines bitrate for ultra-quality input.
|
// AudioQualityUltraInputBitrate defines bitrate for ultra-quality input.
|
||||||
// Used in: Professional microphone input with balanced resource usage
|
// Used in: Premium microphone input optimized for RV1106 constraints
|
||||||
// Impact: Provides excellent voice quality while maintaining stability.
|
// Impact: Excellent voice quality within RV1106 processing limits.
|
||||||
// Default 80kbps ensures excellent voice reproduction with reduced CPU load.
|
// Optimized to 64kbps for stable RV1106 operation.
|
||||||
AudioQualityUltraInputBitrate: 80,
|
AudioQualityUltraInputBitrate: 64,
|
||||||
|
|
||||||
// Audio Quality Sample Rates - Sampling frequencies for different quality levels
|
// Audio Quality Sample Rates - Sampling frequencies for different quality levels
|
||||||
// Used in: Audio capture, processing, and format negotiation
|
// Used in: Audio capture, processing, and format negotiation
|
||||||
|
@ -1611,80 +1612,80 @@ func DefaultAudioConfig() *AudioConfigConstants {
|
||||||
// Impact: Controls latency vs processing efficiency trade-offs
|
// Impact: Controls latency vs processing efficiency trade-offs
|
||||||
|
|
||||||
// AudioQualityLowFrameSize defines frame duration for low-quality audio.
|
// AudioQualityLowFrameSize defines frame duration for low-quality audio.
|
||||||
// Used in: Bandwidth-constrained scenarios prioritizing efficiency
|
// Used in: RV1106 efficiency-prioritized scenarios
|
||||||
// Impact: Balances processing overhead with acceptable latency.
|
// Impact: Balanced frame size for quality and efficiency.
|
||||||
// Default 20ms provides better responsiveness for low-quality scenarios.
|
// Reduced to 20ms for better responsiveness and reduced audio saccades.
|
||||||
AudioQualityLowFrameSize: 20 * time.Millisecond,
|
AudioQualityLowFrameSize: 20 * time.Millisecond,
|
||||||
|
|
||||||
// AudioQualityMediumFrameSize defines frame duration for medium-quality audio.
|
// AudioQualityMediumFrameSize defines frame duration for medium-quality audio.
|
||||||
// Used in: Standard real-time audio applications
|
// Used in: Balanced RV1106 real-time audio applications
|
||||||
// Impact: Provides good balance of latency and processing efficiency.
|
// Impact: Balances latency and processing efficiency for RV1106.
|
||||||
// Default 20ms standard for real-time audio applications.
|
// Optimized to 20ms for RV1106 balanced performance.
|
||||||
AudioQualityMediumFrameSize: 20 * time.Millisecond,
|
AudioQualityMediumFrameSize: 20 * time.Millisecond,
|
||||||
|
|
||||||
// AudioQualityHighFrameSize defines frame duration for high-quality audio.
|
// AudioQualityHighFrameSize defines frame duration for high-quality audio.
|
||||||
// Used in: High-quality audio scenarios with balanced requirements
|
// Used in: RV1106 high-quality scenarios with performance constraints
|
||||||
// Impact: Maintains good latency while ensuring quality processing.
|
// Impact: Maintains acceptable latency while reducing RV1106 CPU load.
|
||||||
// Default 20ms provides optimal balance for high-quality scenarios.
|
// Optimized to 20ms for RV1106 high-quality balance.
|
||||||
AudioQualityHighFrameSize: 20 * time.Millisecond,
|
AudioQualityHighFrameSize: 20 * time.Millisecond,
|
||||||
|
|
||||||
// AudioQualityUltraFrameSize defines frame duration for ultra-quality audio.
|
// AudioQualityUltraFrameSize defines frame duration for ultra-quality audio.
|
||||||
// Used in: Applications requiring excellent quality with balanced performance
|
// Used in: Maximum RV1106 performance without KVM interference
|
||||||
// Impact: Balances latency and processing efficiency for stable operation.
|
// Impact: Balances quality and processing efficiency for RV1106 stability.
|
||||||
// Default 20ms provides excellent quality while reducing CPU load.
|
// Optimized to 20ms for RV1106 maximum stable performance.
|
||||||
AudioQualityUltraFrameSize: 20 * time.Millisecond,
|
AudioQualityUltraFrameSize: 20 * time.Millisecond,
|
||||||
|
|
||||||
// Audio Quality Channels - Channel configuration for different quality levels
|
// Audio Quality Channels - Optimized for RV1106 processing efficiency
|
||||||
// Used in: Audio processing pipeline for channel handling and bandwidth control
|
// Used in: Audio processing pipeline optimized for single-core ARM performance
|
||||||
AudioQualityLowChannels: 2,
|
AudioQualityLowChannels: 1, // Mono for minimal RV1106 processing
|
||||||
AudioQualityMediumChannels: 2,
|
AudioQualityMediumChannels: 2, // Stereo for balanced RV1106 performance
|
||||||
AudioQualityHighChannels: 2,
|
AudioQualityHighChannels: 2, // Stereo for RV1106 high-quality scenarios
|
||||||
AudioQualityUltraChannels: 2,
|
AudioQualityUltraChannels: 2, // Stereo for maximum RV1106 performance
|
||||||
|
|
||||||
// Audio Quality OPUS Encoder Parameters - Quality-specific encoder settings
|
// Audio Quality OPUS Encoder Parameters - Quality-specific encoder settings
|
||||||
// Used in: Dynamic OPUS encoder configuration based on quality presets
|
// Used in: Dynamic OPUS encoder configuration based on quality presets
|
||||||
// Impact: Controls encoding complexity, VBR, signal type, bandwidth, and DTX
|
// Impact: Controls encoding complexity, VBR, signal type, bandwidth, and DTX
|
||||||
|
|
||||||
// Low Quality OPUS Parameters - Optimized for bandwidth conservation with better quality
|
// Low Quality OPUS Parameters - Optimized for RV1106 minimal CPU usage
|
||||||
AudioQualityLowOpusComplexity: 3, // Balanced complexity for better quality
|
AudioQualityLowOpusComplexity: 2, // Slightly increased complexity for better quality
|
||||||
AudioQualityLowOpusVBR: 1, // VBR for better quality at same bitrate
|
AudioQualityLowOpusVBR: 1, // VBR for better quality at same bitrate
|
||||||
AudioQualityLowOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC for better general audio
|
AudioQualityLowOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC for better general audio
|
||||||
AudioQualityLowOpusBandwidth: 1103, // OPUS_BANDWIDTH_WIDEBAND for better frequency range
|
AudioQualityLowOpusBandwidth: 1103, // OPUS_BANDWIDTH_WIDEBAND for improved range
|
||||||
AudioQualityLowOpusDTX: 0, // Disable DTX for consistent quality
|
AudioQualityLowOpusDTX: 0, // Disable DTX to prevent audio interruptions
|
||||||
|
|
||||||
// Medium Quality OPUS Parameters - Enhanced performance and quality
|
// Medium Quality OPUS Parameters - Balanced for RV1106 performance
|
||||||
AudioQualityMediumOpusComplexity: 6, // Higher complexity for better quality
|
AudioQualityMediumOpusComplexity: 3, // Reduced complexity for RV1106 stability
|
||||||
AudioQualityMediumOpusVBR: 1, // VBR for optimal quality
|
AudioQualityMediumOpusVBR: 1, // VBR for optimal quality
|
||||||
AudioQualityMediumOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
AudioQualityMediumOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
||||||
AudioQualityMediumOpusBandwidth: 1104, // OPUS_BANDWIDTH_SUPERWIDEBAND for better range
|
AudioQualityMediumOpusBandwidth: 1103, // OPUS_BANDWIDTH_WIDEBAND for balanced range
|
||||||
AudioQualityMediumOpusDTX: 0, // Disable DTX for consistent quality
|
AudioQualityMediumOpusDTX: 0, // Disable DTX for consistent quality
|
||||||
|
|
||||||
// High Quality OPUS Parameters - Premium quality with optimized performance
|
// High Quality OPUS Parameters - Optimized for RV1106 high performance
|
||||||
AudioQualityHighOpusComplexity: 9, // Near-maximum complexity for excellent quality
|
AudioQualityHighOpusComplexity: 5, // Moderate complexity for RV1106 limits
|
||||||
AudioQualityHighOpusVBR: 1, // VBR for optimal quality
|
AudioQualityHighOpusVBR: 1, // VBR for optimal quality
|
||||||
AudioQualityHighOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
AudioQualityHighOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
||||||
AudioQualityHighOpusBandwidth: 1105, // OPUS_BANDWIDTH_FULLBAND for full frequency range
|
AudioQualityHighOpusBandwidth: 1104, // OPUS_BANDWIDTH_SUPERWIDEBAND for good range
|
||||||
AudioQualityHighOpusDTX: 0, // Disable DTX for consistent quality
|
AudioQualityHighOpusDTX: 0, // Disable DTX for consistent quality
|
||||||
|
|
||||||
// Ultra Quality OPUS Parameters - Optimized for high quality with reasonable resource usage
|
// Ultra Quality OPUS Parameters - Maximum RV1106 performance without KVM interference
|
||||||
AudioQualityUltraOpusComplexity: 8, // Reduced complexity to prevent CPU overload
|
AudioQualityUltraOpusComplexity: 6, // Conservative complexity for RV1106 stability
|
||||||
AudioQualityUltraOpusVBR: 1, // VBR for optimal quality
|
AudioQualityUltraOpusVBR: 1, // VBR for optimal quality
|
||||||
AudioQualityUltraOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
AudioQualityUltraOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
||||||
AudioQualityUltraOpusBandwidth: 1104, // OPUS_BANDWIDTH_SUPERWIDEBAND for better stability
|
AudioQualityUltraOpusBandwidth: 1104, // OPUS_BANDWIDTH_SUPERWIDEBAND for stability
|
||||||
AudioQualityUltraOpusDTX: 0, // Disable DTX for maximum quality
|
AudioQualityUltraOpusDTX: 0, // Disable DTX for maximum quality
|
||||||
|
|
||||||
// CGO Audio Constants
|
// CGO Audio Constants - Optimized for RV1106 native audio processing
|
||||||
CGOOpusBitrate: 96000,
|
CGOOpusBitrate: 64000, // Reduced for RV1106 efficiency
|
||||||
CGOOpusComplexity: 3,
|
CGOOpusComplexity: 2, // Minimal complexity for RV1106
|
||||||
CGOOpusVBR: 1,
|
CGOOpusVBR: 1,
|
||||||
CGOOpusVBRConstraint: 1,
|
CGOOpusVBRConstraint: 1,
|
||||||
CGOOpusSignalType: 3, // OPUS_SIGNAL_MUSIC
|
CGOOpusSignalType: 3002, // OPUS_SIGNAL_MUSIC
|
||||||
CGOOpusBandwidth: 1105, // OPUS_BANDWIDTH_FULLBAND
|
CGOOpusBandwidth: 1103, // OPUS_BANDWIDTH_WIDEBAND for RV1106
|
||||||
CGOOpusDTX: 0,
|
CGOOpusDTX: 0,
|
||||||
CGOSampleRate: 48000,
|
CGOSampleRate: 48000,
|
||||||
CGOChannels: 2,
|
CGOChannels: 2,
|
||||||
CGOFrameSize: 960,
|
CGOFrameSize: 960,
|
||||||
CGOMaxPacketSize: 1500,
|
CGOMaxPacketSize: 1200, // Reduced for RV1106 memory efficiency
|
||||||
|
|
||||||
// Input IPC Constants
|
// Input IPC Constants
|
||||||
// InputIPCSampleRate defines sample rate for input IPC operations.
|
// InputIPCSampleRate defines sample rate for input IPC operations.
|
||||||
|
|
Loading…
Reference in New Issue