voicemeeter\interface\callback/
start_stop.rs

1//! Start stop functions for voicemeeter audio callback
2use crate::VoicemeeterRemote;
3
4impl VoicemeeterRemote {
5    /// Audio callback start.
6    pub fn audio_callback_start(&self) -> Result<(), AudioCallbackStartError> {
7        let res = unsafe { self.raw.VBVMR_AudioCallbackStart() };
8        match res {
9            0 => Ok(()),
10            -1 => Err(AudioCallbackStartError::NoServer),
11            1 => Err(AudioCallbackStartError::NoCallbackRegistered),
12            s => Err(AudioCallbackStartError::Unexpected(s)),
13        }
14    }
15
16    /// Audio callback stop.
17    pub fn audio_callback_stop(&self) -> Result<(), AudioCallbackStopError> {
18        let res = unsafe { self.raw.VBVMR_AudioCallbackStop() };
19        match res {
20            0 => Ok(()),
21            -1 => Err(AudioCallbackStopError::NoServer),
22            1 => Err(AudioCallbackStopError::NoCallbackRegistered),
23            s => Err(AudioCallbackStopError::Unexpected(s)),
24        }
25    }
26}
27
28/// Errors that can occur while registering the audio callback.
29#[derive(Debug, Clone, thiserror::Error)]
30#[non_exhaustive]
31pub enum AudioCallbackStartError {
32    // TODO: is this correct?
33    /// No server.
34    #[error("no server")]
35    NoServer,
36    /// No callback registered.
37    #[error("no callback registered")]
38    NoCallbackRegistered,
39    /// An unknown error code occured.
40    #[error("an unexpected error occurred: error code {0}")]
41    Unexpected(i32),
42}
43
44/// Errors that can occur while unregistering the audio callback.
45#[derive(Debug, Clone, thiserror::Error)]
46#[non_exhaustive]
47pub enum AudioCallbackStopError {
48    // TODO: is this correct?
49    /// No server.
50    #[error("no server")]
51    NoServer,
52    /// No callback registered.
53    #[error("no callback registered")]
54    NoCallbackRegistered,
55    /// An unknown error code occured.
56    #[error("an unexpected error occurred: error code {0}")]
57    Unexpected(i32),
58}