1#![allow(missing_docs)]
18
19use core::ffi::{c_char, c_void};
20
21extern "C" {
22 pub fn acf_free_string(s: *mut c_char);
25
26 pub fn dispatch_queue_create(label: *const c_char, qos: i32) -> *const c_void;
28 pub fn dispatch_queue_release(queue: *const c_void);
29 pub fn dispatch_queue_retain(queue: *const c_void) -> *const c_void;
30
31 pub fn cgimage_save_png(image: *mut c_void, path: *const c_char) -> bool;
33
34 pub fn io_surface_create(
36 width: usize,
37 height: usize,
38 pixel_format: u32,
39 bytes_per_element: usize,
40 out_surface: *mut *mut c_void,
41 ) -> i32;
42 pub fn io_surface_create_with_properties(
43 width: usize,
44 height: usize,
45 pixel_format: u32,
46 bytes_per_element: usize,
47 bytes_per_row: usize,
48 alloc_size: usize,
49 plane_count: usize,
50 plane_widths: *const usize,
51 plane_heights: *const usize,
52 plane_bytes_per_row: *const usize,
53 plane_bytes_per_element: *const usize,
54 plane_offsets: *const usize,
55 plane_sizes: *const usize,
56 surface_out: *mut *mut c_void,
57 ) -> i32;
58 pub fn io_surface_release(surface: *mut c_void);
59 pub fn io_surface_retain(surface: *mut c_void) -> *mut c_void;
60 pub fn io_surface_hash(surface: *mut c_void) -> usize;
61 pub fn io_surface_get_width(surface: *mut c_void) -> usize;
62 pub fn io_surface_get_height(surface: *mut c_void) -> usize;
63 pub fn io_surface_get_bytes_per_row(surface: *mut c_void) -> usize;
64 pub fn io_surface_get_alloc_size(surface: *mut c_void) -> usize;
65 pub fn io_surface_get_pixel_format(surface: *mut c_void) -> u32;
66 pub fn io_surface_get_id(surface: *mut c_void) -> u32;
67 pub fn io_surface_get_seed(surface: *mut c_void) -> u32;
68 pub fn io_surface_get_plane_count(surface: *mut c_void) -> usize;
69 pub fn io_surface_get_width_of_plane(surface: *mut c_void, plane_index: usize) -> usize;
70 pub fn io_surface_get_height_of_plane(surface: *mut c_void, plane_index: usize) -> usize;
71 pub fn io_surface_get_bytes_per_row_of_plane(surface: *mut c_void, plane_index: usize)
72 -> usize;
73 pub fn io_surface_get_base_address_of_plane(
74 surface: *mut c_void,
75 plane_index: usize,
76 ) -> *mut c_void;
77 pub fn io_surface_get_base_address(surface: *mut c_void) -> *mut c_void;
78 pub fn io_surface_get_bytes_per_element(surface: *mut c_void) -> usize;
79 pub fn io_surface_get_element_width(surface: *mut c_void) -> usize;
80 pub fn io_surface_get_element_height(surface: *mut c_void) -> usize;
81 pub fn io_surface_is_in_use(surface: *mut c_void) -> bool;
82 pub fn io_surface_increment_use_count(surface: *mut c_void);
83 pub fn io_surface_decrement_use_count(surface: *mut c_void);
84 pub fn io_surface_lock(surface: *mut c_void, options: u32, seed: *mut u32) -> i32;
85 pub fn io_surface_unlock(surface: *mut c_void, options: u32, seed: *mut u32) -> i32;
86
87 pub fn cm_sample_buffer_release(sample_buffer: *mut c_void);
89 pub fn cm_sample_buffer_retain(sample_buffer: *mut c_void) -> *mut c_void;
90 pub fn cm_sample_buffer_hash(sample_buffer: *mut c_void) -> usize;
91 pub fn cm_sample_buffer_get_data_buffer(sample_buffer: *mut c_void) -> *mut c_void;
92 pub fn cm_sample_buffer_get_format_description(sample_buffer: *mut c_void) -> *mut c_void;
93 pub fn cm_sample_buffer_get_image_buffer(sample_buffer: *mut c_void) -> *mut c_void;
94 pub fn cm_sample_buffer_get_presentation_timestamp(
95 sample_buffer: *mut c_void,
96 out_value: *mut i64,
97 out_timescale: *mut i32,
98 out_flags: *mut u32,
99 out_epoch: *mut i64,
100 );
101 pub fn cm_sample_buffer_get_decode_timestamp(
102 sample_buffer: *mut c_void,
103 out_value: *mut i64,
104 out_timescale: *mut i32,
105 out_flags: *mut u32,
106 out_epoch: *mut i64,
107 );
108 pub fn cm_sample_buffer_get_duration(
109 sample_buffer: *mut c_void,
110 out_value: *mut i64,
111 out_timescale: *mut i32,
112 out_flags: *mut u32,
113 out_epoch: *mut i64,
114 );
115 pub fn cm_sample_buffer_get_num_samples(sample_buffer: *mut c_void) -> i64;
116 pub fn cm_sample_buffer_is_valid(sample_buffer: *mut c_void) -> bool;
117 pub fn cm_sample_buffer_data_is_ready(sample_buffer: *mut c_void) -> bool;
118
119 pub fn cm_block_buffer_release(block_buffer: *mut c_void);
121 pub fn cm_block_buffer_retain(block_buffer: *mut c_void) -> *mut c_void;
122 pub fn cm_block_buffer_hash(block_buffer: *mut c_void) -> usize;
123 pub fn cm_block_buffer_get_data_length(block_buffer: *mut c_void) -> usize;
124 pub fn cm_block_buffer_is_empty(block_buffer: *mut c_void) -> bool;
125 pub fn cm_block_buffer_is_range_contiguous(
126 block_buffer: *mut c_void,
127 offset: usize,
128 length: usize,
129 ) -> bool;
130 pub fn cm_block_buffer_get_data_pointer(
131 block_buffer: *mut c_void,
132 offset: usize,
133 out_length_at_offset: *mut usize,
134 out_total_length: *mut usize,
135 out_data_pointer: *mut *mut c_void,
136 ) -> i32;
137 pub fn cm_block_buffer_copy_data_bytes(
138 block_buffer: *mut c_void,
139 offset_to_data: usize,
140 data_length: usize,
141 destination: *mut c_void,
142 ) -> i32;
143 pub fn cm_block_buffer_create_with_data(
144 data: *const c_void,
145 data_length: usize,
146 block_buffer_out: *mut *mut c_void,
147 ) -> i32;
148 pub fn cm_block_buffer_create_empty(block_buffer_out: *mut *mut c_void) -> i32;
149
150 pub fn cm_format_description_release(format_description: *mut c_void);
152 pub fn cm_format_description_retain(format_description: *mut c_void) -> *mut c_void;
153 pub fn cm_format_description_hash(format_description: *mut c_void) -> usize;
154 pub fn cm_format_description_get_media_type(format_description: *mut c_void) -> u32;
155 pub fn cm_format_description_get_media_subtype(format_description: *mut c_void) -> u32;
156 pub fn cm_format_description_get_extensions(format_description: *mut c_void) -> *const c_void;
157 pub fn cm_format_description_get_audio_sample_rate(format_description: *mut c_void) -> f64;
158 pub fn cm_format_description_get_audio_channel_count(format_description: *mut c_void) -> u32;
159 pub fn cm_format_description_get_audio_bits_per_channel(format_description: *mut c_void)
160 -> u32;
161 pub fn cm_format_description_get_audio_bytes_per_frame(format_description: *mut c_void) -> u32;
162 pub fn cm_format_description_get_audio_format_flags(format_description: *mut c_void) -> u32;
163
164 pub fn cv_pixel_buffer_release(pixel_buffer: *mut c_void);
166 pub fn cv_pixel_buffer_retain(pixel_buffer: *mut c_void) -> *mut c_void;
167 pub fn cv_pixel_buffer_hash(pixel_buffer: *mut c_void) -> usize;
168 pub fn cv_pixel_buffer_get_type_id() -> usize;
169 pub fn cv_pixel_buffer_get_width(pixel_buffer: *mut c_void) -> usize;
170 pub fn cv_pixel_buffer_get_height(pixel_buffer: *mut c_void) -> usize;
171 pub fn cv_pixel_buffer_get_pixel_format_type(pixel_buffer: *mut c_void) -> u32;
172 pub fn cv_pixel_buffer_get_bytes_per_row(pixel_buffer: *mut c_void) -> usize;
173 pub fn cv_pixel_buffer_get_data_size(pixel_buffer: *mut c_void) -> usize;
174 pub fn cv_pixel_buffer_is_planar(pixel_buffer: *mut c_void) -> bool;
175 pub fn cv_pixel_buffer_get_plane_count(pixel_buffer: *mut c_void) -> usize;
176 pub fn cv_pixel_buffer_get_width_of_plane(
177 pixel_buffer: *mut c_void,
178 plane_index: usize,
179 ) -> usize;
180 pub fn cv_pixel_buffer_get_height_of_plane(
181 pixel_buffer: *mut c_void,
182 plane_index: usize,
183 ) -> usize;
184 pub fn cv_pixel_buffer_get_bytes_per_row_of_plane(
185 pixel_buffer: *mut c_void,
186 plane_index: usize,
187 ) -> usize;
188 pub fn cv_pixel_buffer_get_base_address_of_plane(
189 pixel_buffer: *mut c_void,
190 plane_index: usize,
191 ) -> *mut c_void;
192 pub fn cv_pixel_buffer_get_base_address(pixel_buffer: *mut c_void) -> *mut c_void;
193 pub fn cv_pixel_buffer_lock_base_address(pixel_buffer: *mut c_void, flags: u32) -> i32;
194 pub fn cv_pixel_buffer_unlock_base_address(pixel_buffer: *mut c_void, flags: u32) -> i32;
195 pub fn cv_pixel_buffer_get_io_surface(pixel_buffer: *mut c_void) -> *mut c_void;
196 pub fn cv_pixel_buffer_get_extended_pixels(
197 pixel_buffer: *mut c_void,
198 extra_columns_on_left: *mut usize,
199 extra_columns_on_right: *mut usize,
200 extra_rows_on_top: *mut usize,
201 extra_rows_on_bottom: *mut usize,
202 );
203 pub fn cv_pixel_buffer_fill_extended_pixels(pixel_buffer: *mut c_void) -> i32;
204 pub fn cv_pixel_buffer_create(
205 width: usize,
206 height: usize,
207 pixel_format_type: u32,
208 pixel_buffer_out: *mut *mut c_void,
209 ) -> i32;
210 pub fn cv_pixel_buffer_create_with_bytes(
211 width: usize,
212 height: usize,
213 pixel_format_type: u32,
214 base_address: *mut c_void,
215 bytes_per_row: usize,
216 pixel_buffer_out: *mut *mut c_void,
217 ) -> i32;
218 pub fn cv_pixel_buffer_create_with_planar_bytes(
219 width: usize,
220 height: usize,
221 pixel_format_type: u32,
222 num_planes: usize,
223 plane_base_addresses: *const *mut c_void,
224 plane_widths: *const usize,
225 plane_heights: *const usize,
226 plane_bytes_per_row: *const usize,
227 pixel_buffer_out: *mut *mut c_void,
228 ) -> i32;
229 pub fn cv_pixel_buffer_create_with_io_surface(
230 io_surface: *mut c_void,
231 pixel_buffer_out: *mut *mut c_void,
232 ) -> i32;
233
234 pub fn cv_pixel_buffer_pool_release(pool: *mut c_void);
236 pub fn cv_pixel_buffer_pool_retain(pool: *mut c_void) -> *mut c_void;
237 pub fn cv_pixel_buffer_pool_hash(pool: *mut c_void) -> usize;
238 pub fn cv_pixel_buffer_pool_get_type_id() -> usize;
239 pub fn cv_pixel_buffer_pool_create(
240 width: usize,
241 height: usize,
242 pixel_format_type: u32,
243 max_buffers: usize,
244 pool_out: *mut *mut c_void,
245 ) -> i32;
246 pub fn cv_pixel_buffer_pool_create_pixel_buffer(
247 pool: *mut c_void,
248 pixel_buffer_out: *mut *mut c_void,
249 ) -> i32;
250 pub fn cv_pixel_buffer_pool_flush(pool: *mut c_void);
251 pub fn cv_pixel_buffer_pool_get_attributes(pool: *mut c_void) -> *const c_void;
252 pub fn cv_pixel_buffer_pool_get_pixel_buffer_attributes(pool: *mut c_void) -> *const c_void;
253}