Skip to content

Commit 967a429

Browse files
committed
On launch of OpenShot, convert float sample_rate into Integer (if needed), and update settings::sample_rate if needed. This causes our audio device to freeze
1 parent 6736aa6 commit 967a429

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

src/windows/preview_thread.py

+19-5
Original file line numberDiff line numberDiff line change
@@ -178,21 +178,35 @@ def CheckAudioDevice(self):
178178
self.error_found.emit(audio_error)
179179

180180
# Check active sample rate from audio device
181+
# Parse string as float ("48000.0" -> 48000 OR NaN)
181182
detected_sample_rate = float(self.player.GetDefaultSampleRate())
182183
if detected_sample_rate and not math.isnan(detected_sample_rate) and detected_sample_rate > 0.0:
184+
# Convert float to Integer
185+
detected_sample_rate_int = round(detected_sample_rate)
186+
183187
s = get_app().get_settings()
184-
rate = int(s.get("default-samplerate") or 48000)
185-
if detected_sample_rate != rate:
188+
settings_sample_rate = int(s.get("default-samplerate") or 48000)
189+
if detected_sample_rate_int != settings_sample_rate:
186190
log.warning("Your sample rate (%d) does not match OpenShot (%d). "
187191
"Adjusting your 'Preferences->Preview->Default Sample Rate to match your "
188-
"system rate: %d." % (detected_sample_rate, rate, detected_sample_rate))
192+
"system rate: %d." % (detected_sample_rate_int,
193+
settings_sample_rate,
194+
detected_sample_rate_int))
189195

190196
# Update default sample rate in settings
191-
s.set("default-samplerate", detected_sample_rate)
197+
s.set("default-samplerate", detected_sample_rate_int)
192198

193199
# Update current project's sample rate, so we don't have some crazy
194200
# audio drift due to mis-matching sample rates
195-
get_app().updates.update(["sample_rate"], detected_sample_rate)
201+
get_app().updates.update(["sample_rate"], detected_sample_rate_int)
202+
203+
# Convert float 'settings' sample rate to Integer, if detected
204+
if type(s.get("default-samplerate")) == float:
205+
s.set("default-samplerate", detected_sample_rate_int)
206+
207+
# Convert float 'project' sample rate to Integer, if detected
208+
if type(get_app().project.get("sample_rate")) == float:
209+
get_app().updates.update(["sample_rate"], round(get_app().project.get("sample_rate")))
196210

197211
# Check active audio device name and type from audio device
198212
active_audio_device = self.player.GetCurrentAudioDevice()

0 commit comments

Comments
 (0)