From 049ea33c8dd426a50044fed254e95d987842c8df Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Mon, 15 Sep 2025 19:44:21 -0700 Subject: [PATCH] ai did not understand defer in that function --- src/stt.zig | 59 ++++++++++++----------------------------------------- 1 file changed, 13 insertions(+), 46 deletions(-) diff --git a/src/stt.zig b/src/stt.zig index 7844304..2d1dc87 100644 --- a/src/stt.zig +++ b/src/stt.zig @@ -390,77 +390,48 @@ pub const AlsaCapture = struct { // Allocate hardware parameters structure var hw_params: ?*c.snd_pcm_hw_params_t = null; err = c.snd_pcm_hw_params_malloc(@ptrCast(&hw_params)); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + errdefer self.close(); + if (err < 0) return SttError.AudioDeviceError; defer c.snd_pcm_hw_params_free(hw_params); // Initialize hardware parameters err = c.snd_pcm_hw_params_any(self.pcm_handle, hw_params); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set access type to interleaved err = c.snd_pcm_hw_params_set_access(self.pcm_handle, hw_params, c.SND_PCM_ACCESS_RW_INTERLEAVED); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set sample format to 16-bit signed little endian err = c.snd_pcm_hw_params_set_format(self.pcm_handle, hw_params, c.SND_PCM_FORMAT_S16_LE); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set number of channels err = c.snd_pcm_hw_params_set_channels(self.pcm_handle, hw_params, self.channels); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set sample rate var actual_rate = self.sample_rate; err = c.snd_pcm_hw_params_set_rate_near(self.pcm_handle, hw_params, &actual_rate, null); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set buffer size var actual_buffer_size: c.snd_pcm_uframes_t = self.buffer_size; err = c.snd_pcm_hw_params_set_buffer_size_near(self.pcm_handle, hw_params, &actual_buffer_size); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Set period size var actual_period_size: c.snd_pcm_uframes_t = self.period_size; err = c.snd_pcm_hw_params_set_period_size_near(self.pcm_handle, hw_params, &actual_period_size, null); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Apply hardware parameters err = c.snd_pcm_hw_params(self.pcm_handle, hw_params); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; // Prepare the PCM for use err = c.snd_pcm_prepare(self.pcm_handle); - if (err < 0) { - self.close(); - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; } /// Close ALSA device @@ -485,13 +456,9 @@ pub const AlsaCapture = struct { if (frames_read == -c.EPIPE) { // Underrun occurred, try to recover const err = c.snd_pcm_prepare(self.pcm_handle); - if (err < 0) { - return SttError.AudioDeviceError; - } + if (err < 0) return SttError.AudioDeviceError; return 0; // No data read this time - } else { - return SttError.AudioDeviceError; - } + } else return SttError.AudioDeviceError; } const samples_read = @as(usize, @intCast(frames_read)) * self.channels;