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