1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * SPDX-License-Identifier: MIT
 */
use pipewire_wrapper_proc_macro::RawWrapper;

use crate::spa::buffers;
use crate::wrapper::RawWrapper;

#[derive(RawWrapper, Debug)]
#[repr(transparent)]
pub struct BufferRef {
    #[raw]
    raw: pw_sys::pw_buffer,
}

impl BufferRef {
    pub fn buffer(&self) -> &buffers::BufferRef {
        unsafe { buffers::BufferRef::from_raw_ptr(self.raw.buffer) }
    }

    pub fn buffer_mut(&mut self) -> &mut buffers::BufferRef {
        unsafe { buffers::BufferRef::mut_from_raw_ptr(self.raw.buffer) }
    }

    unsafe fn get_user_data<T>(&self) -> Option<&mut T> {
        (self.raw.user_data as *mut T).as_mut()
    }

    pub fn size(&self) -> u64 {
        self.raw.size
    }

    // pub fn requested(&self) -> u64 {
    //     self.raw.requested
    // }
}