libobs_wrapper\data/
audio.rs1use libobs::obs_audio_info2;
2
3use crate::{enums::{ObsSamplesPerSecond, ObsSpeakerLayout}, unsafe_send::Sendable};
4
5
6
7#[repr(C)]
10#[derive(Clone, Debug, PartialEq, Eq)]
11pub struct ObsAudioInfo {
12 samples_per_sec: ObsSamplesPerSecond,
13 speakers: ObsSpeakerLayout,
14 max_buffering_ms: u32,
15 fixed_buffering: bool
16}
17
18impl ObsAudioInfo {
19 pub fn new(samples_per_second: ObsSamplesPerSecond, speakers: ObsSpeakerLayout, max_buffering_ms: u32, fixed_buffering: bool) -> Self {
20 Self {
21 samples_per_sec: samples_per_second,
22 speakers,
23 max_buffering_ms,
24 fixed_buffering
25 }
26 }
27
28 pub fn new_low_latency(samples_per_second: ObsSamplesPerSecond, speakers: ObsSpeakerLayout) -> Self {
29 Self::new(samples_per_second, speakers, 20, true)
30 }
31
32 pub fn as_ptr(&self) -> Sendable<*const obs_audio_info2> {
33 Sendable(self as *const Self as *const obs_audio_info2)
34 }
35}
36
37impl Default for ObsAudioInfo {
38 fn default() -> Self {
39 Self {
40 samples_per_sec: ObsSamplesPerSecond::F44100,
41 speakers: ObsSpeakerLayout::Stereo,
42 max_buffering_ms: 0,
43 fixed_buffering: false
44 }
45 }
46}