1#![allow(missing_docs)]
5
6extern "C" {
7 pub fn cm_sample_buffer_get_image_buffer(
8 sample_buffer: *mut std::ffi::c_void,
9 ) -> *mut std::ffi::c_void;
10 pub fn cm_sample_buffer_get_frame_status(sample_buffer: *mut std::ffi::c_void) -> i32;
11
12 pub fn cm_sample_buffer_get_display_time(
14 sample_buffer: *mut std::ffi::c_void,
15 out_value: *mut u64,
16 ) -> bool;
17 pub fn cm_sample_buffer_get_scale_factor(
18 sample_buffer: *mut std::ffi::c_void,
19 out_value: *mut f64,
20 ) -> bool;
21 pub fn cm_sample_buffer_get_content_scale(
22 sample_buffer: *mut std::ffi::c_void,
23 out_value: *mut f64,
24 ) -> bool;
25 pub fn cm_sample_buffer_get_content_rect(
26 sample_buffer: *mut std::ffi::c_void,
27 out_x: *mut f64,
28 out_y: *mut f64,
29 out_width: *mut f64,
30 out_height: *mut f64,
31 ) -> bool;
32 pub fn cm_sample_buffer_get_bounding_rect(
33 sample_buffer: *mut std::ffi::c_void,
34 out_x: *mut f64,
35 out_y: *mut f64,
36 out_width: *mut f64,
37 out_height: *mut f64,
38 ) -> bool;
39 pub fn cm_sample_buffer_get_screen_rect(
40 sample_buffer: *mut std::ffi::c_void,
41 out_x: *mut f64,
42 out_y: *mut f64,
43 out_width: *mut f64,
44 out_height: *mut f64,
45 ) -> bool;
46 pub fn cm_sample_buffer_get_dirty_rects(
47 sample_buffer: *mut std::ffi::c_void,
48 out_rects: *mut *mut std::ffi::c_void,
49 out_count: *mut usize,
50 ) -> bool;
51 pub fn cm_sample_buffer_free_dirty_rects(rects_ptr: *mut std::ffi::c_void);
52
53 pub fn cm_sample_buffer_get_presentation_timestamp(
54 sample_buffer: *mut std::ffi::c_void,
55 out_value: *mut i64,
56 out_timescale: *mut i32,
57 out_flags: *mut u32,
58 out_epoch: *mut i64,
59 );
60 pub fn cm_sample_buffer_get_duration(
61 sample_buffer: *mut std::ffi::c_void,
62 out_value: *mut i64,
63 out_timescale: *mut i32,
64 out_flags: *mut u32,
65 out_epoch: *mut i64,
66 );
67 pub fn cm_sample_buffer_release(sample_buffer: *mut std::ffi::c_void);
68 pub fn cm_sample_buffer_retain(sample_buffer: *mut std::ffi::c_void);
69 pub fn cm_sample_buffer_is_valid(sample_buffer: *mut std::ffi::c_void) -> bool;
70 pub fn cm_sample_buffer_get_num_samples(sample_buffer: *mut std::ffi::c_void) -> usize;
71 pub fn cm_sample_buffer_get_audio_buffer_list(
72 sample_buffer: *mut std::ffi::c_void,
73 out_num_buffers: *mut u32,
74 out_buffers_ptr: *mut *mut std::ffi::c_void,
75 out_buffers_len: *mut usize,
76 out_block_buffer: *mut *mut std::ffi::c_void,
77 );
78 pub fn cm_block_buffer_release(block_buffer: *mut std::ffi::c_void);
79 pub fn cm_block_buffer_retain(block_buffer: *mut std::ffi::c_void) -> *mut std::ffi::c_void;
80 pub fn cm_block_buffer_get_data_length(block_buffer: *mut std::ffi::c_void) -> usize;
81 pub fn cm_block_buffer_is_empty(block_buffer: *mut std::ffi::c_void) -> bool;
82 pub fn cm_block_buffer_is_range_contiguous(
83 block_buffer: *mut std::ffi::c_void,
84 offset: usize,
85 length: usize,
86 ) -> bool;
87 pub fn cm_block_buffer_get_data_pointer(
88 block_buffer: *mut std::ffi::c_void,
89 offset: usize,
90 out_length_at_offset: *mut usize,
91 out_total_length: *mut usize,
92 out_data_pointer: *mut *mut std::ffi::c_void,
93 ) -> i32;
94 pub fn cm_block_buffer_copy_data_bytes(
95 block_buffer: *mut std::ffi::c_void,
96 offset_to_data: usize,
97 data_length: usize,
98 destination: *mut std::ffi::c_void,
99 ) -> i32;
100 pub fn cm_sample_buffer_get_data_buffer(
101 sample_buffer: *mut std::ffi::c_void,
102 ) -> *mut std::ffi::c_void;
103
104 pub fn cm_sample_buffer_get_decode_timestamp(
105 sample_buffer: *mut std::ffi::c_void,
106 out_value: *mut i64,
107 out_timescale: *mut i32,
108 out_flags: *mut u32,
109 out_epoch: *mut i64,
110 );
111 pub fn cm_sample_buffer_get_output_presentation_timestamp(
112 sample_buffer: *mut std::ffi::c_void,
113 out_value: *mut i64,
114 out_timescale: *mut i32,
115 out_flags: *mut u32,
116 out_epoch: *mut i64,
117 );
118 pub fn cm_sample_buffer_set_output_presentation_timestamp(
119 sample_buffer: *mut std::ffi::c_void,
120 value: i64,
121 timescale: i32,
122 flags: u32,
123 epoch: i64,
124 ) -> i32;
125 pub fn cm_sample_buffer_get_sample_size(
126 sample_buffer: *mut std::ffi::c_void,
127 sample_index: usize,
128 ) -> usize;
129 pub fn cm_sample_buffer_get_total_sample_size(sample_buffer: *mut std::ffi::c_void) -> usize;
130 pub fn cm_sample_buffer_is_ready_for_data_access(sample_buffer: *mut std::ffi::c_void) -> bool;
131 pub fn cm_sample_buffer_make_data_ready(sample_buffer: *mut std::ffi::c_void) -> i32;
132
133 pub fn cm_sample_buffer_get_format_description(
135 sample_buffer: *mut std::ffi::c_void,
136 ) -> *mut std::ffi::c_void;
137 pub fn cm_sample_buffer_get_sample_timing_info(
138 sample_buffer: *mut std::ffi::c_void,
139 sample_index: usize,
140 out_duration_value: *mut i64,
141 out_duration_timescale: *mut i32,
142 out_duration_flags: *mut u32,
143 out_duration_epoch: *mut i64,
144 out_pts_value: *mut i64,
145 out_pts_timescale: *mut i32,
146 out_pts_flags: *mut u32,
147 out_pts_epoch: *mut i64,
148 out_dts_value: *mut i64,
149 out_dts_timescale: *mut i32,
150 out_dts_flags: *mut u32,
151 out_dts_epoch: *mut i64,
152 ) -> i32;
153 pub fn cm_sample_buffer_invalidate(sample_buffer: *mut std::ffi::c_void) -> i32;
154 pub fn cm_sample_buffer_create_copy_with_new_timing(
155 sample_buffer: *mut std::ffi::c_void,
156 num_timing_infos: usize,
157 timing_info_array: *const std::ffi::c_void,
158 sample_buffer_out: *mut *mut std::ffi::c_void,
159 ) -> i32;
160 pub fn cm_sample_buffer_copy_pcm_data_into_audio_buffer_list(
161 sample_buffer: *mut std::ffi::c_void,
162 frame_offset: i32,
163 num_frames: i32,
164 buffer_list: *mut std::ffi::c_void,
165 ) -> i32;
166
167 pub fn cm_format_description_get_media_type(format_description: *mut std::ffi::c_void) -> u32;
169 pub fn cm_format_description_get_media_subtype(
170 format_description: *mut std::ffi::c_void,
171 ) -> u32;
172 pub fn cm_format_description_get_extensions(
173 format_description: *mut std::ffi::c_void,
174 ) -> *const std::ffi::c_void;
175 pub fn cm_format_description_retain(
176 format_description: *mut std::ffi::c_void,
177 ) -> *mut std::ffi::c_void;
178 pub fn cm_format_description_release(format_description: *mut std::ffi::c_void);
179
180 pub fn cm_format_description_get_audio_sample_rate(
182 format_description: *mut std::ffi::c_void,
183 ) -> f64;
184 pub fn cm_format_description_get_audio_channel_count(
185 format_description: *mut std::ffi::c_void,
186 ) -> u32;
187 pub fn cm_format_description_get_audio_bits_per_channel(
188 format_description: *mut std::ffi::c_void,
189 ) -> u32;
190 pub fn cm_format_description_get_audio_bytes_per_frame(
191 format_description: *mut std::ffi::c_void,
192 ) -> u32;
193 pub fn cm_format_description_get_audio_format_flags(
194 format_description: *mut std::ffi::c_void,
195 ) -> u32;
196
197 pub fn cm_sample_buffer_hash(sample_buffer: *mut std::ffi::c_void) -> usize;
199 pub fn cv_pixel_buffer_hash(pixel_buffer: *mut std::ffi::c_void) -> usize;
200 pub fn cv_pixel_buffer_pool_hash(pool: *mut std::ffi::c_void) -> usize;
201 pub fn cm_block_buffer_hash(block_buffer: *mut std::ffi::c_void) -> usize;
202 pub fn cm_format_description_hash(format_description: *mut std::ffi::c_void) -> usize;
203 pub fn io_surface_hash(surface: *mut std::ffi::c_void) -> usize;
204
205 pub fn cv_pixel_buffer_get_width(pixel_buffer: *mut std::ffi::c_void) -> usize;
206 pub fn cv_pixel_buffer_get_height(pixel_buffer: *mut std::ffi::c_void) -> usize;
207 pub fn cv_pixel_buffer_get_pixel_format_type(pixel_buffer: *mut std::ffi::c_void) -> u32;
208 pub fn cv_pixel_buffer_get_bytes_per_row(pixel_buffer: *mut std::ffi::c_void) -> usize;
209 pub fn cv_pixel_buffer_lock_base_address(
210 pixel_buffer: *mut std::ffi::c_void,
211 flags: u32,
212 ) -> i32;
213 pub fn cv_pixel_buffer_unlock_base_address(
214 pixel_buffer: *mut std::ffi::c_void,
215 flags: u32,
216 ) -> i32;
217 pub fn cv_pixel_buffer_get_base_address(
218 pixel_buffer: *mut std::ffi::c_void,
219 ) -> *mut std::ffi::c_void;
220 pub fn cv_pixel_buffer_get_io_surface(
221 pixel_buffer: *mut std::ffi::c_void,
222 ) -> *mut std::ffi::c_void;
223 pub fn cv_pixel_buffer_release(pixel_buffer: *mut std::ffi::c_void);
224 pub fn cv_pixel_buffer_retain(pixel_buffer: *mut std::ffi::c_void) -> *mut std::ffi::c_void;
225 pub fn cv_pixel_buffer_create(
226 width: usize,
227 height: usize,
228 pixel_format_type: u32,
229 pixel_buffer_out: *mut *mut std::ffi::c_void,
230 ) -> i32;
231 pub fn cv_pixel_buffer_create_with_bytes(
232 width: usize,
233 height: usize,
234 pixel_format_type: u32,
235 base_address: *mut std::ffi::c_void,
236 bytes_per_row: usize,
237 pixel_buffer_out: *mut *mut std::ffi::c_void,
238 ) -> i32;
239 pub fn cv_pixel_buffer_fill_extended_pixels(pixel_buffer: *mut std::ffi::c_void) -> i32;
240
241 pub fn cv_pixel_buffer_create_with_planar_bytes(
243 width: usize,
244 height: usize,
245 pixel_format_type: u32,
246 num_planes: usize,
247 plane_base_addresses: *const *mut std::ffi::c_void,
248 plane_widths: *const usize,
249 plane_heights: *const usize,
250 plane_bytes_per_row: *const usize,
251 pixel_buffer_out: *mut *mut std::ffi::c_void,
252 ) -> i32;
253 pub fn cv_pixel_buffer_create_with_io_surface(
254 io_surface: *mut std::ffi::c_void,
255 pixel_buffer_out: *mut *mut std::ffi::c_void,
256 ) -> i32;
257 pub fn cv_pixel_buffer_get_type_id() -> usize;
258
259 pub fn cv_pixel_buffer_pool_create(
261 width: usize,
262 height: usize,
263 pixel_format_type: u32,
264 max_buffers: usize,
265 pool_out: *mut *mut std::ffi::c_void,
266 ) -> i32;
267 pub fn cv_pixel_buffer_pool_create_pixel_buffer(
268 pool: *mut std::ffi::c_void,
269 pixel_buffer_out: *mut *mut std::ffi::c_void,
270 ) -> i32;
271 pub fn cv_pixel_buffer_pool_flush(pool: *mut std::ffi::c_void);
272 pub fn cv_pixel_buffer_pool_get_type_id() -> usize;
273 pub fn cv_pixel_buffer_pool_retain(pool: *mut std::ffi::c_void) -> *mut std::ffi::c_void;
274 pub fn cv_pixel_buffer_pool_release(pool: *mut std::ffi::c_void);
275
276 pub fn cv_pixel_buffer_pool_get_attributes(
278 pool: *mut std::ffi::c_void,
279 ) -> *const std::ffi::c_void;
280 pub fn cv_pixel_buffer_pool_get_pixel_buffer_attributes(
281 pool: *mut std::ffi::c_void,
282 ) -> *const std::ffi::c_void;
283
284 pub fn cv_pixel_buffer_get_data_size(pixel_buffer: *mut std::ffi::c_void) -> usize;
285 pub fn cv_pixel_buffer_is_planar(pixel_buffer: *mut std::ffi::c_void) -> bool;
286 pub fn cv_pixel_buffer_get_plane_count(pixel_buffer: *mut std::ffi::c_void) -> usize;
287 pub fn cv_pixel_buffer_get_width_of_plane(
288 pixel_buffer: *mut std::ffi::c_void,
289 plane_index: usize,
290 ) -> usize;
291 pub fn cv_pixel_buffer_get_height_of_plane(
292 pixel_buffer: *mut std::ffi::c_void,
293 plane_index: usize,
294 ) -> usize;
295 pub fn cv_pixel_buffer_get_base_address_of_plane(
296 pixel_buffer: *mut std::ffi::c_void,
297 plane_index: usize,
298 ) -> *mut std::ffi::c_void;
299 pub fn cv_pixel_buffer_get_bytes_per_row_of_plane(
300 pixel_buffer: *mut std::ffi::c_void,
301 plane_index: usize,
302 ) -> usize;
303 pub fn cv_pixel_buffer_get_extended_pixels(
304 pixel_buffer: *mut std::ffi::c_void,
305 extra_columns_on_left: *mut usize,
306 extra_columns_on_right: *mut usize,
307 extra_rows_on_top: *mut usize,
308 extra_rows_on_bottom: *mut usize,
309 );
310
311 pub fn cm_sample_buffer_create_for_image_buffer(
312 image_buffer: *mut std::ffi::c_void,
313 presentation_time_value: i64,
314 presentation_time_scale: i32,
315 duration_value: i64,
316 duration_scale: i32,
317 sample_buffer_out: *mut *mut std::ffi::c_void,
318 ) -> i32;
319
320 pub fn io_surface_get_width(surface: *mut std::ffi::c_void) -> usize;
322 pub fn io_surface_get_height(surface: *mut std::ffi::c_void) -> usize;
323 pub fn io_surface_get_bytes_per_row(surface: *mut std::ffi::c_void) -> usize;
324 pub fn io_surface_get_alloc_size(surface: *mut std::ffi::c_void) -> usize;
325 pub fn io_surface_get_pixel_format(surface: *mut std::ffi::c_void) -> u32;
326 pub fn io_surface_get_id(surface: *mut std::ffi::c_void) -> u32;
327 pub fn io_surface_get_seed(surface: *mut std::ffi::c_void) -> u32;
328 pub fn io_surface_get_plane_count(surface: *mut std::ffi::c_void) -> usize;
329 pub fn io_surface_get_width_of_plane(
330 surface: *mut std::ffi::c_void,
331 plane_index: usize,
332 ) -> usize;
333 pub fn io_surface_get_height_of_plane(
334 surface: *mut std::ffi::c_void,
335 plane_index: usize,
336 ) -> usize;
337 pub fn io_surface_get_bytes_per_row_of_plane(
338 surface: *mut std::ffi::c_void,
339 plane_index: usize,
340 ) -> usize;
341 pub fn io_surface_get_base_address_of_plane(
342 surface: *mut std::ffi::c_void,
343 plane_index: usize,
344 ) -> *mut std::ffi::c_void;
345 pub fn io_surface_get_base_address(surface: *mut std::ffi::c_void) -> *mut std::ffi::c_void;
346 pub fn io_surface_get_bytes_per_element(surface: *mut std::ffi::c_void) -> usize;
347 pub fn io_surface_get_element_width(surface: *mut std::ffi::c_void) -> usize;
348 pub fn io_surface_get_element_height(surface: *mut std::ffi::c_void) -> usize;
349 pub fn io_surface_is_in_use(surface: *mut std::ffi::c_void) -> bool;
350 pub fn io_surface_increment_use_count(surface: *mut std::ffi::c_void);
351 pub fn io_surface_decrement_use_count(surface: *mut std::ffi::c_void);
352 pub fn io_surface_lock(surface: *mut std::ffi::c_void, options: u32, seed: *mut u32) -> i32;
353 pub fn io_surface_unlock(surface: *mut std::ffi::c_void, options: u32, seed: *mut u32) -> i32;
354 pub fn io_surface_release(surface: *mut std::ffi::c_void);
355 pub fn io_surface_retain(surface: *mut std::ffi::c_void) -> *mut std::ffi::c_void;
356
357 pub fn cm_block_buffer_create_with_data(
359 data: *const std::ffi::c_void,
360 data_length: usize,
361 block_buffer_out: *mut *mut std::ffi::c_void,
362 ) -> i32;
363 pub fn cm_block_buffer_create_empty(block_buffer_out: *mut *mut std::ffi::c_void) -> i32;
364}