voicemeeter\interface\callback/
start_stop.rs1use crate::VoicemeeterRemote;
3
4impl VoicemeeterRemote {
5 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 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#[derive(Debug, Clone, thiserror::Error)]
30#[non_exhaustive]
31pub enum AudioCallbackStartError {
32 #[error("no server")]
35 NoServer,
36 #[error("no callback registered")]
38 NoCallbackRegistered,
39 #[error("an unexpected error occurred: error code {0}")]
41 Unexpected(i32),
42}
43
44#[derive(Debug, Clone, thiserror::Error)]
46#[non_exhaustive]
47pub enum AudioCallbackStopError {
48 #[error("no server")]
51 NoServer,
52 #[error("no callback registered")]
54 NoCallbackRegistered,
55 #[error("an unexpected error occurred: error code {0}")]
57 Unexpected(i32),
58}