Skip to main content

azure_kinect/
playback_data_block.rs

1use azure_kinect_sys::k4arecord::k4a_playback_data_block_t;
2use std::ptr;
3
4pub struct PlaybackDataBlock<'a> {
5    api_record: &'a azure_kinect_sys::api::ApiRecord,
6    handle: k4a_playback_data_block_t,
7}
8
9impl PlaybackDataBlock<'_> {
10    pub(crate) fn from_handle(
11        api_record: &azure_kinect_sys::api::ApiRecord,
12        handle: k4a_playback_data_block_t,
13    ) -> PlaybackDataBlock {
14        PlaybackDataBlock { api_record, handle }
15    }
16
17    /// Get the time stamp in micro seconds for the given data_block
18    pub fn get_device_timestamp_usec(&self) -> u64 {
19        unsafe {
20            (self
21                .api_record
22                .funcs
23                .k4a_playback_data_block_get_device_timestamp_usec)(self.handle)
24        }
25    }
26
27    /// Get the size of the data_block buffer.
28    pub fn get_buffer_size(&self) -> usize {
29        unsafe {
30            (self
31                .api_record
32                .funcs
33                .k4a_playback_data_block_get_buffer_size)(self.handle) as usize
34        }
35    }
36
37    /// Get the data_block buffer.
38    pub fn get_buffer(&self) -> *const u8 {
39        unsafe { (self.api_record.funcs.k4a_playback_data_block_get_buffer)(self.handle) }
40    }
41}
42
43impl Drop for PlaybackDataBlock<'_> {
44    fn drop(&mut self) {
45        unsafe {
46            (self.api_record.funcs.k4a_playback_data_block_release)(self.handle);
47        }
48        self.handle = ptr::null_mut();
49    }
50}