apple_cf/ffi/mod.rs
1//! Raw FFI declarations for the Swift bridge.
2//!
3//! These are intentionally low-level (`*mut c_void` + scalar arguments) and
4//! `unsafe`; safe wrappers live in [`crate::iosurface`], [`crate::dispatch_queue`],
5//! etc.
6//!
7//! Currently exposes:
8//! * `acf_free_string` — heap-string deallocator used by every bridge fn that
9//! returns an owned C string back to Rust.
10//! * `dispatch_queue_*` — Grand Central Dispatch queue lifetime + creation.
11//! * `io_surface_*` — `IOSurface` accessors and lifetime control.
12//!
13//! Future framework additions (`CoreMedia`, `CoreVideo`, Metal, ...) extend this
14//! module and gain matching `@_cdecl` exports under
15//! `swift-bridge/Sources/<Framework>Bridge/`.
16
17#![allow(missing_docs)]
18
19mod core_foundation;
20mod core_video_extras;
21mod dispatch_extras;
22
23pub use core_foundation::*;
24pub use core_video_extras::*;
25pub use dispatch_extras::*;
26
27use core::ffi::{c_char, c_void};
28
29extern "C" {
30 /// Free a heap-allocated C string previously returned by any bridge fn.
31 /// Centralised in `AppleCFBridge.swift`.
32 pub fn acf_free_string(s: *mut c_char);
33
34 // ---- dispatch ----
35/// Swift bridge function `acf_dispatch_queue_create` for the corresponding Apple API.
36 pub fn acf_dispatch_queue_create(label: *const c_char, qos: i32) -> *const c_void;
37/// Swift bridge function `dispatch_queue_release` for the corresponding Apple API.
38 pub fn dispatch_queue_release(queue: *const c_void);
39/// Swift bridge function `dispatch_queue_retain` for the corresponding Apple API.
40 pub fn dispatch_queue_retain(queue: *const c_void) -> *const c_void;
41
42 // ---- CoreGraphics bridge helpers ----
43/// Swift bridge function `cgimage_save_png` for the corresponding Apple API.
44 pub fn cgimage_save_png(image: *mut c_void, path: *const c_char) -> bool;
45
46 // ---- IOSurface ----
47/// Swift bridge function `io_surface_create` for the corresponding Apple API.
48 pub fn io_surface_create(
49 width: usize,
50 height: usize,
51 pixel_format: u32,
52 bytes_per_element: usize,
53 out_surface: *mut *mut c_void,
54 ) -> i32;
55/// Swift bridge function `io_surface_create_with_properties` for the corresponding Apple API.
56 pub fn io_surface_create_with_properties(
57 width: usize,
58 height: usize,
59 pixel_format: u32,
60 bytes_per_element: usize,
61 bytes_per_row: usize,
62 alloc_size: usize,
63 plane_count: usize,
64 plane_widths: *const usize,
65 plane_heights: *const usize,
66 plane_bytes_per_row: *const usize,
67 plane_bytes_per_element: *const usize,
68 plane_offsets: *const usize,
69 plane_sizes: *const usize,
70 surface_out: *mut *mut c_void,
71 ) -> i32;
72/// Swift bridge function `io_surface_release` for the corresponding Apple API.
73 pub fn io_surface_release(surface: *mut c_void);
74/// Swift bridge function `io_surface_retain` for the corresponding Apple API.
75 pub fn io_surface_retain(surface: *mut c_void) -> *mut c_void;
76/// Swift bridge function `io_surface_hash` for the corresponding Apple API.
77 pub fn io_surface_hash(surface: *mut c_void) -> usize;
78/// Swift bridge function `io_surface_get_width` for the corresponding Apple API.
79 pub fn io_surface_get_width(surface: *mut c_void) -> usize;
80/// Swift bridge function `io_surface_get_height` for the corresponding Apple API.
81 pub fn io_surface_get_height(surface: *mut c_void) -> usize;
82/// Swift bridge function `io_surface_get_bytes_per_row` for the corresponding Apple API.
83 pub fn io_surface_get_bytes_per_row(surface: *mut c_void) -> usize;
84/// Swift bridge function `io_surface_get_alloc_size` for the corresponding Apple API.
85 pub fn io_surface_get_alloc_size(surface: *mut c_void) -> usize;
86/// Swift bridge function `io_surface_get_pixel_format` for the corresponding Apple API.
87 pub fn io_surface_get_pixel_format(surface: *mut c_void) -> u32;
88/// Swift bridge function `io_surface_get_id` for the corresponding Apple API.
89 pub fn io_surface_get_id(surface: *mut c_void) -> u32;
90/// Swift bridge function `io_surface_get_seed` for the corresponding Apple API.
91 pub fn io_surface_get_seed(surface: *mut c_void) -> u32;
92/// Swift bridge function `io_surface_get_plane_count` for the corresponding Apple API.
93 pub fn io_surface_get_plane_count(surface: *mut c_void) -> usize;
94/// Swift bridge function `io_surface_get_width_of_plane` for the corresponding Apple API.
95 pub fn io_surface_get_width_of_plane(surface: *mut c_void, plane_index: usize) -> usize;
96/// Swift bridge function `io_surface_get_height_of_plane` for the corresponding Apple API.
97 pub fn io_surface_get_height_of_plane(surface: *mut c_void, plane_index: usize) -> usize;
98/// Swift bridge function `io_surface_get_bytes_per_row_of_plane` for the corresponding Apple API.
99 pub fn io_surface_get_bytes_per_row_of_plane(surface: *mut c_void, plane_index: usize)
100 -> usize;
101/// Swift bridge function `io_surface_get_base_address_of_plane` for the corresponding Apple API.
102 pub fn io_surface_get_base_address_of_plane(
103 surface: *mut c_void,
104 plane_index: usize,
105 ) -> *mut c_void;
106/// Swift bridge function `io_surface_get_base_address` for the corresponding Apple API.
107 pub fn io_surface_get_base_address(surface: *mut c_void) -> *mut c_void;
108/// Swift bridge function `io_surface_get_bytes_per_element` for the corresponding Apple API.
109 pub fn io_surface_get_bytes_per_element(surface: *mut c_void) -> usize;
110/// Swift bridge function `io_surface_get_element_width` for the corresponding Apple API.
111 pub fn io_surface_get_element_width(surface: *mut c_void) -> usize;
112/// Swift bridge function `io_surface_get_element_height` for the corresponding Apple API.
113 pub fn io_surface_get_element_height(surface: *mut c_void) -> usize;
114/// Swift bridge function `io_surface_is_in_use` for the corresponding Apple API.
115 pub fn io_surface_is_in_use(surface: *mut c_void) -> bool;
116/// Swift bridge function `io_surface_increment_use_count` for the corresponding Apple API.
117 pub fn io_surface_increment_use_count(surface: *mut c_void);
118/// Swift bridge function `io_surface_decrement_use_count` for the corresponding Apple API.
119 pub fn io_surface_decrement_use_count(surface: *mut c_void);
120/// Swift bridge function `io_surface_lock` for the corresponding Apple API.
121 pub fn io_surface_lock(surface: *mut c_void, options: u32, seed: *mut u32) -> i32;
122/// Swift bridge function `io_surface_unlock` for the corresponding Apple API.
123 pub fn io_surface_unlock(surface: *mut c_void, options: u32, seed: *mut u32) -> i32;
124
125 // ---- CMSampleBuffer ----
126/// Swift bridge function `cm_sample_buffer_release` for the corresponding Apple API.
127 pub fn cm_sample_buffer_release(sample_buffer: *mut c_void);
128/// Swift bridge function `cm_sample_buffer_retain` for the corresponding Apple API.
129 pub fn cm_sample_buffer_retain(sample_buffer: *mut c_void) -> *mut c_void;
130/// Swift bridge function `cm_sample_buffer_hash` for the corresponding Apple API.
131 pub fn cm_sample_buffer_hash(sample_buffer: *mut c_void) -> usize;
132/// Swift bridge function `cm_sample_buffer_get_data_buffer` for the corresponding Apple API.
133 pub fn cm_sample_buffer_get_data_buffer(sample_buffer: *mut c_void) -> *mut c_void;
134/// Swift bridge function `cm_sample_buffer_get_format_description` for the corresponding Apple API.
135 pub fn cm_sample_buffer_get_format_description(sample_buffer: *mut c_void) -> *mut c_void;
136/// Swift bridge function `cm_sample_buffer_get_image_buffer` for the corresponding Apple API.
137 pub fn cm_sample_buffer_get_image_buffer(sample_buffer: *mut c_void) -> *mut c_void;
138/// Swift bridge function `cm_sample_buffer_get_presentation_timestamp` for the corresponding Apple API.
139 pub fn cm_sample_buffer_get_presentation_timestamp(
140 sample_buffer: *mut c_void,
141 out_value: *mut i64,
142 out_timescale: *mut i32,
143 out_flags: *mut u32,
144 out_epoch: *mut i64,
145 );
146/// Swift bridge function `cm_sample_buffer_get_decode_timestamp` for the corresponding Apple API.
147 pub fn cm_sample_buffer_get_decode_timestamp(
148 sample_buffer: *mut c_void,
149 out_value: *mut i64,
150 out_timescale: *mut i32,
151 out_flags: *mut u32,
152 out_epoch: *mut i64,
153 );
154/// Swift bridge function `cm_sample_buffer_get_duration` for the corresponding Apple API.
155 pub fn cm_sample_buffer_get_duration(
156 sample_buffer: *mut c_void,
157 out_value: *mut i64,
158 out_timescale: *mut i32,
159 out_flags: *mut u32,
160 out_epoch: *mut i64,
161 );
162/// Swift bridge function `cm_sample_buffer_get_num_samples` for the corresponding Apple API.
163 pub fn cm_sample_buffer_get_num_samples(sample_buffer: *mut c_void) -> i64;
164/// Swift bridge function `cm_sample_buffer_is_valid` for the corresponding Apple API.
165 pub fn cm_sample_buffer_is_valid(sample_buffer: *mut c_void) -> bool;
166/// Swift bridge function `cm_sample_buffer_data_is_ready` for the corresponding Apple API.
167 pub fn cm_sample_buffer_data_is_ready(sample_buffer: *mut c_void) -> bool;
168
169 // ---- CMBlockBuffer ----
170/// Swift bridge function `cm_block_buffer_release` for the corresponding Apple API.
171 pub fn cm_block_buffer_release(block_buffer: *mut c_void);
172/// Swift bridge function `cm_block_buffer_retain` for the corresponding Apple API.
173 pub fn cm_block_buffer_retain(block_buffer: *mut c_void) -> *mut c_void;
174/// Swift bridge function `cm_block_buffer_hash` for the corresponding Apple API.
175 pub fn cm_block_buffer_hash(block_buffer: *mut c_void) -> usize;
176/// Swift bridge function `cm_block_buffer_get_data_length` for the corresponding Apple API.
177 pub fn cm_block_buffer_get_data_length(block_buffer: *mut c_void) -> usize;
178/// Swift bridge function `cm_block_buffer_is_empty` for the corresponding Apple API.
179 pub fn cm_block_buffer_is_empty(block_buffer: *mut c_void) -> bool;
180/// Swift bridge function `cm_block_buffer_is_range_contiguous` for the corresponding Apple API.
181 pub fn cm_block_buffer_is_range_contiguous(
182 block_buffer: *mut c_void,
183 offset: usize,
184 length: usize,
185 ) -> bool;
186/// Swift bridge function `cm_block_buffer_get_data_pointer` for the corresponding Apple API.
187 pub fn cm_block_buffer_get_data_pointer(
188 block_buffer: *mut c_void,
189 offset: usize,
190 out_length_at_offset: *mut usize,
191 out_total_length: *mut usize,
192 out_data_pointer: *mut *mut c_void,
193 ) -> i32;
194/// Swift bridge function `cm_block_buffer_copy_data_bytes` for the corresponding Apple API.
195 pub fn cm_block_buffer_copy_data_bytes(
196 block_buffer: *mut c_void,
197 offset_to_data: usize,
198 data_length: usize,
199 destination: *mut c_void,
200 ) -> i32;
201/// Swift bridge function `cm_block_buffer_create_with_data` for the corresponding Apple API.
202 pub fn cm_block_buffer_create_with_data(
203 data: *const c_void,
204 data_length: usize,
205 block_buffer_out: *mut *mut c_void,
206 ) -> i32;
207/// Swift bridge function `cm_block_buffer_create_empty` for the corresponding Apple API.
208 pub fn cm_block_buffer_create_empty(block_buffer_out: *mut *mut c_void) -> i32;
209
210 // ---- CMFormatDescription ----
211/// Swift bridge function `cm_format_description_release` for the corresponding Apple API.
212 pub fn cm_format_description_release(format_description: *mut c_void);
213/// Swift bridge function `cm_format_description_retain` for the corresponding Apple API.
214 pub fn cm_format_description_retain(format_description: *mut c_void) -> *mut c_void;
215/// Swift bridge function `cm_format_description_hash` for the corresponding Apple API.
216 pub fn cm_format_description_hash(format_description: *mut c_void) -> usize;
217/// Swift bridge function `cm_format_description_get_media_type` for the corresponding Apple API.
218 pub fn cm_format_description_get_media_type(format_description: *mut c_void) -> u32;
219/// Swift bridge function `cm_format_description_get_media_subtype` for the corresponding Apple API.
220 pub fn cm_format_description_get_media_subtype(format_description: *mut c_void) -> u32;
221/// Swift bridge function `cm_format_description_get_extensions` for the corresponding Apple API.
222 pub fn cm_format_description_get_extensions(format_description: *mut c_void) -> *const c_void;
223/// Swift bridge function `cm_format_description_get_audio_sample_rate` for the corresponding Apple API.
224 pub fn cm_format_description_get_audio_sample_rate(format_description: *mut c_void) -> f64;
225/// Swift bridge function `cm_format_description_get_audio_channel_count` for the corresponding Apple API.
226 pub fn cm_format_description_get_audio_channel_count(format_description: *mut c_void) -> u32;
227/// Swift bridge function `cm_format_description_get_audio_bits_per_channel` for the corresponding Apple API.
228 pub fn cm_format_description_get_audio_bits_per_channel(format_description: *mut c_void)
229 -> u32;
230/// Swift bridge function `cm_format_description_get_audio_bytes_per_frame` for the corresponding Apple API.
231 pub fn cm_format_description_get_audio_bytes_per_frame(format_description: *mut c_void) -> u32;
232/// Swift bridge function `cm_format_description_get_audio_format_flags` for the corresponding Apple API.
233 pub fn cm_format_description_get_audio_format_flags(format_description: *mut c_void) -> u32;
234/// Swift bridge function `cm_metadata_format_description_create_with_keys` for the corresponding Apple API.
235 pub fn cm_metadata_format_description_create_with_keys(
236 metadata_type: u32,
237 keys: *mut c_void,
238 format_description_out: *mut *mut c_void,
239 ) -> i32;
240/// Swift bridge function `cm_metadata_format_description_create_with_metadata_specifications` for the corresponding Apple API.
241 pub fn cm_metadata_format_description_create_with_metadata_specifications(
242 metadata_type: u32,
243 metadata_specifications: *mut c_void,
244 format_description_out: *mut *mut c_void,
245 ) -> i32;
246/// Swift bridge function `cm_metadata_format_description_create_with_description_and_metadata_specifications` for the corresponding Apple API.
247 pub fn cm_metadata_format_description_create_with_description_and_metadata_specifications(
248 source_description: *mut c_void,
249 metadata_specifications: *mut c_void,
250 format_description_out: *mut *mut c_void,
251 ) -> i32;
252/// Swift bridge function `cm_metadata_format_description_create_by_merging_descriptions` for the corresponding Apple API.
253 pub fn cm_metadata_format_description_create_by_merging_descriptions(
254 source_description: *mut c_void,
255 other_source_description: *mut c_void,
256 format_description_out: *mut *mut c_void,
257 ) -> i32;
258/// Swift bridge function `cm_metadata_format_description_get_identifiers` for the corresponding Apple API.
259 pub fn cm_metadata_format_description_get_identifiers(
260 format_description: *mut c_void,
261 ) -> *mut c_void;
262/// Swift bridge function `cm_metadata_format_description_get_key_with_local_id` for the corresponding Apple API.
263 pub fn cm_metadata_format_description_get_key_with_local_id(
264 format_description: *mut c_void,
265 local_id: u32,
266 ) -> *mut c_void;
267/// Swift bridge function `cm_metadata_format_description_extension_key_metadata_key_table` for the corresponding Apple API.
268 pub fn cm_metadata_format_description_extension_key_metadata_key_table() -> *mut c_void;
269/// Swift bridge function `cm_metadata_format_description_key_conforming_data_types` for the corresponding Apple API.
270 pub fn cm_metadata_format_description_key_conforming_data_types() -> *mut c_void;
271/// Swift bridge function `cm_metadata_format_description_key_data_type` for the corresponding Apple API.
272 pub fn cm_metadata_format_description_key_data_type() -> *mut c_void;
273/// Swift bridge function `cm_metadata_format_description_key_data_type_namespace` for the corresponding Apple API.
274 pub fn cm_metadata_format_description_key_data_type_namespace() -> *mut c_void;
275/// Swift bridge function `cm_metadata_format_description_key_language_tag` for the corresponding Apple API.
276 pub fn cm_metadata_format_description_key_language_tag() -> *mut c_void;
277/// Swift bridge function `cm_metadata_format_description_key_local_id` for the corresponding Apple API.
278 pub fn cm_metadata_format_description_key_local_id() -> *mut c_void;
279/// Swift bridge function `cm_metadata_format_description_key_namespace` for the corresponding Apple API.
280 pub fn cm_metadata_format_description_key_namespace() -> *mut c_void;
281/// Swift bridge function `cm_metadata_format_description_key_setup_data` for the corresponding Apple API.
282 pub fn cm_metadata_format_description_key_setup_data() -> *mut c_void;
283/// Swift bridge function `cm_metadata_format_description_key_structural_dependency` for the corresponding Apple API.
284 pub fn cm_metadata_format_description_key_structural_dependency() -> *mut c_void;
285/// Swift bridge function `cm_metadata_format_description_key_value` for the corresponding Apple API.
286 pub fn cm_metadata_format_description_key_value() -> *mut c_void;
287/// Swift bridge function `cm_metadata_format_description_metadata_specification_key_data_type` for the corresponding Apple API.
288 pub fn cm_metadata_format_description_metadata_specification_key_data_type() -> *mut c_void;
289/// Swift bridge function `cm_metadata_format_description_metadata_specification_key_extended_language_tag` for the corresponding Apple API.
290 pub fn cm_metadata_format_description_metadata_specification_key_extended_language_tag(
291 ) -> *mut c_void;
292/// Swift bridge function `cm_metadata_format_description_metadata_specification_key_identifier` for the corresponding Apple API.
293 pub fn cm_metadata_format_description_metadata_specification_key_identifier() -> *mut c_void;
294/// Swift bridge function `cm_metadata_format_description_metadata_specification_key_setup_data` for the corresponding Apple API.
295 pub fn cm_metadata_format_description_metadata_specification_key_setup_data() -> *mut c_void;
296/// Swift bridge function `cm_metadata_format_description_metadata_specification_key_structural_dependency` for the corresponding Apple API.
297 pub fn cm_metadata_format_description_metadata_specification_key_structural_dependency(
298 ) -> *mut c_void;
299/// Swift bridge function `cm_metadata_format_description_structural_dependency_key_dependency_is_invalid_flag` for the corresponding Apple API.
300 pub fn cm_metadata_format_description_structural_dependency_key_dependency_is_invalid_flag(
301 ) -> *mut c_void;
302
303 // ---- CVPixelBuffer ----
304/// Swift bridge function `cv_pixel_buffer_release` for the corresponding Apple API.
305 pub fn cv_pixel_buffer_release(pixel_buffer: *mut c_void);
306/// Swift bridge function `cv_pixel_buffer_retain` for the corresponding Apple API.
307 pub fn cv_pixel_buffer_retain(pixel_buffer: *mut c_void) -> *mut c_void;
308/// Swift bridge function `cv_pixel_buffer_hash` for the corresponding Apple API.
309 pub fn cv_pixel_buffer_hash(pixel_buffer: *mut c_void) -> usize;
310/// Swift bridge function `cv_pixel_buffer_get_type_id` for the corresponding Apple API.
311 pub fn cv_pixel_buffer_get_type_id() -> usize;
312/// Swift bridge function `cv_pixel_buffer_get_width` for the corresponding Apple API.
313 pub fn cv_pixel_buffer_get_width(pixel_buffer: *mut c_void) -> usize;
314/// Swift bridge function `cv_pixel_buffer_get_height` for the corresponding Apple API.
315 pub fn cv_pixel_buffer_get_height(pixel_buffer: *mut c_void) -> usize;
316/// Swift bridge function `cv_pixel_buffer_get_pixel_format_type` for the corresponding Apple API.
317 pub fn cv_pixel_buffer_get_pixel_format_type(pixel_buffer: *mut c_void) -> u32;
318/// Swift bridge function `cv_pixel_buffer_get_bytes_per_row` for the corresponding Apple API.
319 pub fn cv_pixel_buffer_get_bytes_per_row(pixel_buffer: *mut c_void) -> usize;
320/// Swift bridge function `cv_pixel_buffer_get_data_size` for the corresponding Apple API.
321 pub fn cv_pixel_buffer_get_data_size(pixel_buffer: *mut c_void) -> usize;
322/// Swift bridge function `cv_pixel_buffer_is_planar` for the corresponding Apple API.
323 pub fn cv_pixel_buffer_is_planar(pixel_buffer: *mut c_void) -> bool;
324/// Swift bridge function `cv_pixel_buffer_get_plane_count` for the corresponding Apple API.
325 pub fn cv_pixel_buffer_get_plane_count(pixel_buffer: *mut c_void) -> usize;
326/// Swift bridge function `cv_pixel_buffer_get_width_of_plane` for the corresponding Apple API.
327 pub fn cv_pixel_buffer_get_width_of_plane(
328 pixel_buffer: *mut c_void,
329 plane_index: usize,
330 ) -> usize;
331/// Swift bridge function `cv_pixel_buffer_get_height_of_plane` for the corresponding Apple API.
332 pub fn cv_pixel_buffer_get_height_of_plane(
333 pixel_buffer: *mut c_void,
334 plane_index: usize,
335 ) -> usize;
336/// Swift bridge function `cv_pixel_buffer_get_bytes_per_row_of_plane` for the corresponding Apple API.
337 pub fn cv_pixel_buffer_get_bytes_per_row_of_plane(
338 pixel_buffer: *mut c_void,
339 plane_index: usize,
340 ) -> usize;
341/// Swift bridge function `cv_pixel_buffer_get_base_address_of_plane` for the corresponding Apple API.
342 pub fn cv_pixel_buffer_get_base_address_of_plane(
343 pixel_buffer: *mut c_void,
344 plane_index: usize,
345 ) -> *mut c_void;
346/// Swift bridge function `cv_pixel_buffer_get_base_address` for the corresponding Apple API.
347 pub fn cv_pixel_buffer_get_base_address(pixel_buffer: *mut c_void) -> *mut c_void;
348/// Swift bridge function `cv_pixel_buffer_lock_base_address` for the corresponding Apple API.
349 pub fn cv_pixel_buffer_lock_base_address(pixel_buffer: *mut c_void, flags: u32) -> i32;
350/// Swift bridge function `cv_pixel_buffer_unlock_base_address` for the corresponding Apple API.
351 pub fn cv_pixel_buffer_unlock_base_address(pixel_buffer: *mut c_void, flags: u32) -> i32;
352/// Swift bridge function `cv_pixel_buffer_get_io_surface` for the corresponding Apple API.
353 pub fn cv_pixel_buffer_get_io_surface(pixel_buffer: *mut c_void) -> *mut c_void;
354/// Swift bridge function `cv_pixel_buffer_get_extended_pixels` for the corresponding Apple API.
355 pub fn cv_pixel_buffer_get_extended_pixels(
356 pixel_buffer: *mut c_void,
357 extra_columns_on_left: *mut usize,
358 extra_columns_on_right: *mut usize,
359 extra_rows_on_top: *mut usize,
360 extra_rows_on_bottom: *mut usize,
361 );
362/// Swift bridge function `cv_pixel_buffer_fill_extended_pixels` for the corresponding Apple API.
363 pub fn cv_pixel_buffer_fill_extended_pixels(pixel_buffer: *mut c_void) -> i32;
364/// Swift bridge function `cv_pixel_buffer_create` for the corresponding Apple API.
365 pub fn cv_pixel_buffer_create(
366 width: usize,
367 height: usize,
368 pixel_format_type: u32,
369 pixel_buffer_out: *mut *mut c_void,
370 ) -> i32;
371/// Swift bridge function `cv_pixel_buffer_create_with_bytes` for the corresponding Apple API.
372 pub fn cv_pixel_buffer_create_with_bytes(
373 width: usize,
374 height: usize,
375 pixel_format_type: u32,
376 base_address: *mut c_void,
377 bytes_per_row: usize,
378 pixel_buffer_out: *mut *mut c_void,
379 ) -> i32;
380/// Swift bridge function `cv_pixel_buffer_create_with_planar_bytes` for the corresponding Apple API.
381 pub fn cv_pixel_buffer_create_with_planar_bytes(
382 width: usize,
383 height: usize,
384 pixel_format_type: u32,
385 num_planes: usize,
386 plane_base_addresses: *const *mut c_void,
387 plane_widths: *const usize,
388 plane_heights: *const usize,
389 plane_bytes_per_row: *const usize,
390 pixel_buffer_out: *mut *mut c_void,
391 ) -> i32;
392/// Swift bridge function `cv_pixel_buffer_create_with_io_surface` for the corresponding Apple API.
393 pub fn cv_pixel_buffer_create_with_io_surface(
394 io_surface: *mut c_void,
395 pixel_buffer_out: *mut *mut c_void,
396 ) -> i32;
397
398 // ---- CVPixelBufferPool ----
399/// Swift bridge function `cv_pixel_buffer_pool_release` for the corresponding Apple API.
400 pub fn cv_pixel_buffer_pool_release(pool: *mut c_void);
401/// Swift bridge function `cv_pixel_buffer_pool_retain` for the corresponding Apple API.
402 pub fn cv_pixel_buffer_pool_retain(pool: *mut c_void) -> *mut c_void;
403/// Swift bridge function `cv_pixel_buffer_pool_hash` for the corresponding Apple API.
404 pub fn cv_pixel_buffer_pool_hash(pool: *mut c_void) -> usize;
405/// Swift bridge function `cv_pixel_buffer_pool_get_type_id` for the corresponding Apple API.
406 pub fn cv_pixel_buffer_pool_get_type_id() -> usize;
407/// Swift bridge function `cv_pixel_buffer_pool_create` for the corresponding Apple API.
408 pub fn cv_pixel_buffer_pool_create(
409 width: usize,
410 height: usize,
411 pixel_format_type: u32,
412 max_buffers: usize,
413 pool_out: *mut *mut c_void,
414 ) -> i32;
415/// Swift bridge function `cv_pixel_buffer_pool_create_pixel_buffer` for the corresponding Apple API.
416 pub fn cv_pixel_buffer_pool_create_pixel_buffer(
417 pool: *mut c_void,
418 pixel_buffer_out: *mut *mut c_void,
419 ) -> i32;
420/// Swift bridge function `cv_pixel_buffer_pool_flush` for the corresponding Apple API.
421 pub fn cv_pixel_buffer_pool_flush(pool: *mut c_void);
422/// Swift bridge function `cv_pixel_buffer_pool_get_attributes` for the corresponding Apple API.
423 pub fn cv_pixel_buffer_pool_get_attributes(pool: *mut c_void) -> *const c_void;
424/// Swift bridge function `cv_pixel_buffer_pool_get_pixel_buffer_attributes` for the corresponding Apple API.
425 pub fn cv_pixel_buffer_pool_get_pixel_buffer_attributes(pool: *mut c_void) -> *const c_void;
426}