objc2_core_video/generated/
CVBuffer.rs1use core::cell::UnsafeCell;
4use core::ffi::*;
5use core::marker::{PhantomData, PhantomPinned};
6use core::ptr::NonNull;
7#[cfg(feature = "objc2")]
8use objc2::__framework_prelude::*;
9use objc2_core_foundation::*;
10
11use crate::*;
12
13extern "C" {
14 pub static kCVBufferPropagatedAttachmentsKey: &'static CFString;
16}
17
18extern "C" {
19 pub static kCVBufferNonPropagatedAttachmentsKey: &'static CFString;
21}
22
23extern "C" {
24 pub static kCVBufferMovieTimeKey: &'static CFString;
26}
27
28extern "C" {
29 pub static kCVBufferTimeValueKey: &'static CFString;
31}
32
33extern "C" {
34 pub static kCVBufferTimeScaleKey: &'static CFString;
36}
37
38#[repr(transparent)]
41#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
42pub struct CVAttachmentMode(pub u32);
43impl CVAttachmentMode {
44 #[doc(alias = "kCVAttachmentMode_ShouldNotPropagate")]
45 pub const ShouldNotPropagate: Self = Self(0);
46 #[doc(alias = "kCVAttachmentMode_ShouldPropagate")]
47 pub const ShouldPropagate: Self = Self(1);
48}
49
50#[cfg(feature = "objc2")]
51unsafe impl Encode for CVAttachmentMode {
52 const ENCODING: Encoding = u32::ENCODING;
53}
54
55#[cfg(feature = "objc2")]
56unsafe impl RefEncode for CVAttachmentMode {
57 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
58}
59
60#[doc(alias = "CVBufferRef")]
64#[repr(C)]
65pub struct CVBuffer {
66 inner: [u8; 0],
67 _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
68}
69
70cf_type!(
71 unsafe impl CVBuffer {}
72);
73#[cfg(feature = "objc2")]
74cf_objc2_type!(
75 unsafe impl RefEncode<"__CVBuffer"> for CVBuffer {}
76);
77
78impl CVBuffer {
79 #[doc(alias = "CVBufferSetAttachment")]
96 #[inline]
97 pub unsafe fn set_attachment(
98 &self,
99 key: &CFString,
100 value: &CFType,
101 attachment_mode: CVAttachmentMode,
102 ) {
103 extern "C-unwind" {
104 fn CVBufferSetAttachment(
105 buffer: &CVBuffer,
106 key: &CFString,
107 value: &CFType,
108 attachment_mode: CVAttachmentMode,
109 );
110 }
111 unsafe { CVBufferSetAttachment(self, key, value, attachment_mode) }
112 }
113
114 #[doc(alias = "CVBufferGetAttachment")]
130 #[deprecated]
131 #[inline]
132 pub unsafe fn get_attachment(
133 &self,
134 key: &CFString,
135 attachment_mode: *mut CVAttachmentMode,
136 ) -> Option<CFRetained<CFType>> {
137 extern "C-unwind" {
138 fn CVBufferGetAttachment(
139 buffer: &CVBuffer,
140 key: &CFString,
141 attachment_mode: *mut CVAttachmentMode,
142 ) -> Option<NonNull<CFType>>;
143 }
144 let ret = unsafe { CVBufferGetAttachment(self, key, attachment_mode) };
145 ret.map(|ret| unsafe { CFRetained::retain(ret) })
146 }
147
148 #[doc(alias = "CVBufferRemoveAttachment")]
156 #[inline]
157 pub fn remove_attachment(&self, key: &CFString) {
158 extern "C-unwind" {
159 fn CVBufferRemoveAttachment(buffer: &CVBuffer, key: &CFString);
160 }
161 unsafe { CVBufferRemoveAttachment(self, key) }
162 }
163
164 #[doc(alias = "CVBufferRemoveAllAttachments")]
170 #[inline]
171 pub fn remove_all_attachments(&self) {
172 extern "C-unwind" {
173 fn CVBufferRemoveAllAttachments(buffer: &CVBuffer);
174 }
175 unsafe { CVBufferRemoveAllAttachments(self) }
176 }
177
178 #[doc(alias = "CVBufferGetAttachments")]
187 #[deprecated]
188 #[inline]
189 pub fn get_attachments(
190 &self,
191 attachment_mode: CVAttachmentMode,
192 ) -> Option<CFRetained<CFDictionary>> {
193 extern "C-unwind" {
194 fn CVBufferGetAttachments(
195 buffer: &CVBuffer,
196 attachment_mode: CVAttachmentMode,
197 ) -> Option<NonNull<CFDictionary>>;
198 }
199 let ret = unsafe { CVBufferGetAttachments(self, attachment_mode) };
200 ret.map(|ret| unsafe { CFRetained::retain(ret) })
201 }
202
203 #[doc(alias = "CVBufferSetAttachments")]
213 #[inline]
214 pub unsafe fn set_attachments(
215 &self,
216 the_attachments: &CFDictionary,
217 attachment_mode: CVAttachmentMode,
218 ) {
219 extern "C-unwind" {
220 fn CVBufferSetAttachments(
221 buffer: &CVBuffer,
222 the_attachments: &CFDictionary,
223 attachment_mode: CVAttachmentMode,
224 );
225 }
226 unsafe { CVBufferSetAttachments(self, the_attachments, attachment_mode) }
227 }
228
229 #[doc(alias = "CVBufferPropagateAttachments")]
238 #[inline]
239 pub fn propagate_attachments(&self, destination_buffer: &CVBuffer) {
240 extern "C-unwind" {
241 fn CVBufferPropagateAttachments(
242 source_buffer: &CVBuffer,
243 destination_buffer: &CVBuffer,
244 );
245 }
246 unsafe { CVBufferPropagateAttachments(self, destination_buffer) }
247 }
248
249 #[doc(alias = "CVBufferCopyAttachments")]
257 #[inline]
258 pub fn attachments(
259 &self,
260 attachment_mode: CVAttachmentMode,
261 ) -> Option<CFRetained<CFDictionary>> {
262 extern "C-unwind" {
263 fn CVBufferCopyAttachments(
264 buffer: &CVBuffer,
265 attachment_mode: CVAttachmentMode,
266 ) -> Option<NonNull<CFDictionary>>;
267 }
268 let ret = unsafe { CVBufferCopyAttachments(self, attachment_mode) };
269 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
270 }
271
272 #[doc(alias = "CVBufferCopyAttachment")]
288 #[inline]
289 pub unsafe fn attachment(
290 &self,
291 key: &CFString,
292 attachment_mode: *mut CVAttachmentMode,
293 ) -> Option<CFRetained<CFType>> {
294 extern "C-unwind" {
295 fn CVBufferCopyAttachment(
296 buffer: &CVBuffer,
297 key: &CFString,
298 attachment_mode: *mut CVAttachmentMode,
299 ) -> Option<NonNull<CFType>>;
300 }
301 let ret = unsafe { CVBufferCopyAttachment(self, key, attachment_mode) };
302 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
303 }
304
305 #[doc(alias = "CVBufferHasAttachment")]
313 #[inline]
314 pub fn has_attachment(&self, key: &CFString) -> bool {
315 extern "C-unwind" {
316 fn CVBufferHasAttachment(buffer: &CVBuffer, key: &CFString) -> Boolean;
317 }
318 let ret = unsafe { CVBufferHasAttachment(self, key) };
319 ret != 0
320 }
321}
322
323extern "C-unwind" {
324 #[deprecated = "renamed to `CVBuffer::set_attachment`"]
325 pub fn CVBufferSetAttachment(
326 buffer: &CVBuffer,
327 key: &CFString,
328 value: &CFType,
329 attachment_mode: CVAttachmentMode,
330 );
331}
332
333#[deprecated = "renamed to `CVBuffer::get_attachment`"]
334#[inline]
335pub unsafe extern "C-unwind" fn CVBufferGetAttachment(
336 buffer: &CVBuffer,
337 key: &CFString,
338 attachment_mode: *mut CVAttachmentMode,
339) -> Option<CFRetained<CFType>> {
340 extern "C-unwind" {
341 fn CVBufferGetAttachment(
342 buffer: &CVBuffer,
343 key: &CFString,
344 attachment_mode: *mut CVAttachmentMode,
345 ) -> Option<NonNull<CFType>>;
346 }
347 let ret = unsafe { CVBufferGetAttachment(buffer, key, attachment_mode) };
348 ret.map(|ret| unsafe { CFRetained::retain(ret) })
349}
350
351#[deprecated = "renamed to `CVBuffer::remove_attachment`"]
352#[inline]
353pub extern "C-unwind" fn CVBufferRemoveAttachment(buffer: &CVBuffer, key: &CFString) {
354 extern "C-unwind" {
355 fn CVBufferRemoveAttachment(buffer: &CVBuffer, key: &CFString);
356 }
357 unsafe { CVBufferRemoveAttachment(buffer, key) }
358}
359
360#[deprecated = "renamed to `CVBuffer::remove_all_attachments`"]
361#[inline]
362pub extern "C-unwind" fn CVBufferRemoveAllAttachments(buffer: &CVBuffer) {
363 extern "C-unwind" {
364 fn CVBufferRemoveAllAttachments(buffer: &CVBuffer);
365 }
366 unsafe { CVBufferRemoveAllAttachments(buffer) }
367}
368
369#[deprecated = "renamed to `CVBuffer::get_attachments`"]
370#[inline]
371pub extern "C-unwind" fn CVBufferGetAttachments(
372 buffer: &CVBuffer,
373 attachment_mode: CVAttachmentMode,
374) -> Option<CFRetained<CFDictionary>> {
375 extern "C-unwind" {
376 fn CVBufferGetAttachments(
377 buffer: &CVBuffer,
378 attachment_mode: CVAttachmentMode,
379 ) -> Option<NonNull<CFDictionary>>;
380 }
381 let ret = unsafe { CVBufferGetAttachments(buffer, attachment_mode) };
382 ret.map(|ret| unsafe { CFRetained::retain(ret) })
383}
384
385extern "C-unwind" {
386 #[deprecated = "renamed to `CVBuffer::set_attachments`"]
387 pub fn CVBufferSetAttachments(
388 buffer: &CVBuffer,
389 the_attachments: &CFDictionary,
390 attachment_mode: CVAttachmentMode,
391 );
392}
393
394#[deprecated = "renamed to `CVBuffer::propagate_attachments`"]
395#[inline]
396pub extern "C-unwind" fn CVBufferPropagateAttachments(
397 source_buffer: &CVBuffer,
398 destination_buffer: &CVBuffer,
399) {
400 extern "C-unwind" {
401 fn CVBufferPropagateAttachments(source_buffer: &CVBuffer, destination_buffer: &CVBuffer);
402 }
403 unsafe { CVBufferPropagateAttachments(source_buffer, destination_buffer) }
404}
405
406#[deprecated = "renamed to `CVBuffer::attachments`"]
407#[inline]
408pub extern "C-unwind" fn CVBufferCopyAttachments(
409 buffer: &CVBuffer,
410 attachment_mode: CVAttachmentMode,
411) -> Option<CFRetained<CFDictionary>> {
412 extern "C-unwind" {
413 fn CVBufferCopyAttachments(
414 buffer: &CVBuffer,
415 attachment_mode: CVAttachmentMode,
416 ) -> Option<NonNull<CFDictionary>>;
417 }
418 let ret = unsafe { CVBufferCopyAttachments(buffer, attachment_mode) };
419 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
420}
421
422#[deprecated = "renamed to `CVBuffer::attachment`"]
423#[inline]
424pub unsafe extern "C-unwind" fn CVBufferCopyAttachment(
425 buffer: &CVBuffer,
426 key: &CFString,
427 attachment_mode: *mut CVAttachmentMode,
428) -> Option<CFRetained<CFType>> {
429 extern "C-unwind" {
430 fn CVBufferCopyAttachment(
431 buffer: &CVBuffer,
432 key: &CFString,
433 attachment_mode: *mut CVAttachmentMode,
434 ) -> Option<NonNull<CFType>>;
435 }
436 let ret = unsafe { CVBufferCopyAttachment(buffer, key, attachment_mode) };
437 ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
438}
439
440#[deprecated = "renamed to `CVBuffer::has_attachment`"]
441#[inline]
442pub extern "C-unwind" fn CVBufferHasAttachment(buffer: &CVBuffer, key: &CFString) -> bool {
443 extern "C-unwind" {
444 fn CVBufferHasAttachment(buffer: &CVBuffer, key: &CFString) -> Boolean;
445 }
446 let ret = unsafe { CVBufferHasAttachment(buffer, key) };
447 ret != 0
448}