fix: disable periodic stats for WAV inputs and guard sample_rate access

This commit is contained in:
pstruebi
2025-11-04 15:11:47 +01:00
parent c01bdb8b96
commit a196bcd2fc

View File

@@ -674,7 +674,12 @@ class Streamer():
self.is_streaming = True
# frame drop algo parameters
sample_rate = big['audio_input']._pcm_format.sample_rate
# In demo/precoded modes there may be no audio_input or no _pcm_format yet
ai = big.get('audio_input')
if ai is not None and hasattr(ai, '_pcm_format') and getattr(ai, '_pcm_format') is not None:
sample_rate = ai._pcm_format.sample_rate
else:
sample_rate = global_config.auracast_sampling_rate_hz
samples_discarded_total = 0 # Total samples discarded
discard_events = 0 # Number of times we discarded samples
frames_since_last_discard = 999 # Guard: frames since last discard (start high to allow first drop)
@@ -813,9 +818,11 @@ class Streamer():
# Increment guard counter (tracks frames since last discard)
frames_since_last_discard += 1
# Periodic stats logging
# Periodic stats logging (only for device/sounddevice streams, not WAV files)
# WAV file concurrent access causes deadlock in ThreadedAudioInput
now = time.perf_counter()
if now - last_stats_log >= stats_interval:
is_device_stream = hasattr(big['audio_input'], '_stream') and big['audio_input']._stream is not None
if is_device_stream and now - last_stats_log >= stats_interval:
# Get current buffer status from PortAudio
current_sd_buffer = 0
if hasattr(big['audio_input'], '_stream') and big['audio_input']._stream: