1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::{ffi, AudioInfo};
7use glib::{
8 prelude::*,
9 signal::{connect_raw, SignalHandlerId},
10 translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15 #[doc(alias = "GstAudioEncoder")]
16 pub struct AudioEncoder(Object<ffi::GstAudioEncoder, ffi::GstAudioEncoderClass>) @extends gst::Element, gst::Object;
17
18 match fn {
19 type_ => || ffi::gst_audio_encoder_get_type(),
20 }
21}
22
23impl AudioEncoder {
24 pub const NONE: Option<&'static AudioEncoder> = None;
25}
26
27unsafe impl Send for AudioEncoder {}
28unsafe impl Sync for AudioEncoder {}
29
30mod sealed {
31 pub trait Sealed {}
32 impl<T: super::IsA<super::AudioEncoder>> Sealed for T {}
33}
34
35pub trait AudioEncoderExt: IsA<AudioEncoder> + sealed::Sealed + 'static {
36 #[doc(alias = "gst_audio_encoder_allocate_output_buffer")]
37 fn allocate_output_buffer(&self, size: usize) -> gst::Buffer {
38 unsafe {
39 from_glib_full(ffi::gst_audio_encoder_allocate_output_buffer(
40 self.as_ref().to_glib_none().0,
41 size,
42 ))
43 }
44 }
45
46 #[doc(alias = "gst_audio_encoder_finish_frame")]
47 fn finish_frame(
48 &self,
49 buffer: Option<gst::Buffer>,
50 samples: i32,
51 ) -> Result<gst::FlowSuccess, gst::FlowError> {
52 unsafe {
53 try_from_glib(ffi::gst_audio_encoder_finish_frame(
54 self.as_ref().to_glib_none().0,
55 buffer.into_glib_ptr(),
56 samples,
57 ))
58 }
59 }
60
61 #[doc(alias = "gst_audio_encoder_get_audio_info")]
62 #[doc(alias = "get_audio_info")]
63 fn audio_info(&self) -> AudioInfo {
64 unsafe {
65 from_glib_none(ffi::gst_audio_encoder_get_audio_info(
66 self.as_ref().to_glib_none().0,
67 ))
68 }
69 }
70
71 #[doc(alias = "gst_audio_encoder_get_drainable")]
72 #[doc(alias = "get_drainable")]
73 fn is_drainable(&self) -> bool {
74 unsafe {
75 from_glib(ffi::gst_audio_encoder_get_drainable(
76 self.as_ref().to_glib_none().0,
77 ))
78 }
79 }
80
81 #[doc(alias = "gst_audio_encoder_get_frame_max")]
82 #[doc(alias = "get_frame_max")]
83 fn frame_max(&self) -> i32 {
84 unsafe { ffi::gst_audio_encoder_get_frame_max(self.as_ref().to_glib_none().0) }
85 }
86
87 #[doc(alias = "gst_audio_encoder_get_frame_samples_max")]
88 #[doc(alias = "get_frame_samples_max")]
89 fn frame_samples_max(&self) -> i32 {
90 unsafe { ffi::gst_audio_encoder_get_frame_samples_max(self.as_ref().to_glib_none().0) }
91 }
92
93 #[doc(alias = "gst_audio_encoder_get_frame_samples_min")]
94 #[doc(alias = "get_frame_samples_min")]
95 fn frame_samples_min(&self) -> i32 {
96 unsafe { ffi::gst_audio_encoder_get_frame_samples_min(self.as_ref().to_glib_none().0) }
97 }
98
99 #[doc(alias = "gst_audio_encoder_get_hard_min")]
100 #[doc(alias = "get_hard_min")]
101 fn is_hard_min(&self) -> bool {
102 unsafe {
103 from_glib(ffi::gst_audio_encoder_get_hard_min(
104 self.as_ref().to_glib_none().0,
105 ))
106 }
107 }
108
109 #[doc(alias = "gst_audio_encoder_get_hard_resync")]
110 #[doc(alias = "get_hard_resync")]
111 #[doc(alias = "hard-resync")]
112 fn is_hard_resync(&self) -> bool {
113 unsafe {
114 from_glib(ffi::gst_audio_encoder_get_hard_resync(
115 self.as_ref().to_glib_none().0,
116 ))
117 }
118 }
119
120 #[doc(alias = "gst_audio_encoder_get_latency")]
121 #[doc(alias = "get_latency")]
122 fn latency(&self) -> (gst::ClockTime, Option<gst::ClockTime>) {
123 unsafe {
124 let mut min = std::mem::MaybeUninit::uninit();
125 let mut max = std::mem::MaybeUninit::uninit();
126 ffi::gst_audio_encoder_get_latency(
127 self.as_ref().to_glib_none().0,
128 min.as_mut_ptr(),
129 max.as_mut_ptr(),
130 );
131 (
132 try_from_glib(min.assume_init()).expect("mandatory glib value is None"),
133 from_glib(max.assume_init()),
134 )
135 }
136 }
137
138 #[doc(alias = "gst_audio_encoder_get_lookahead")]
139 #[doc(alias = "get_lookahead")]
140 fn lookahead(&self) -> i32 {
141 unsafe { ffi::gst_audio_encoder_get_lookahead(self.as_ref().to_glib_none().0) }
142 }
143
144 #[doc(alias = "gst_audio_encoder_get_mark_granule")]
145 #[doc(alias = "get_mark_granule")]
146 #[doc(alias = "mark-granule")]
147 fn is_mark_granule(&self) -> bool {
148 unsafe {
149 from_glib(ffi::gst_audio_encoder_get_mark_granule(
150 self.as_ref().to_glib_none().0,
151 ))
152 }
153 }
154
155 #[doc(alias = "gst_audio_encoder_get_perfect_timestamp")]
156 #[doc(alias = "get_perfect_timestamp")]
157 #[doc(alias = "perfect-timestamp")]
158 fn is_perfect_timestamp(&self) -> bool {
159 unsafe {
160 from_glib(ffi::gst_audio_encoder_get_perfect_timestamp(
161 self.as_ref().to_glib_none().0,
162 ))
163 }
164 }
165
166 #[doc(alias = "gst_audio_encoder_get_tolerance")]
167 #[doc(alias = "get_tolerance")]
168 fn tolerance(&self) -> gst::ClockTime {
169 unsafe {
170 try_from_glib(ffi::gst_audio_encoder_get_tolerance(
171 self.as_ref().to_glib_none().0,
172 ))
173 .expect("mandatory glib value is None")
174 }
175 }
176
177 #[doc(alias = "gst_audio_encoder_merge_tags")]
178 fn merge_tags(&self, tags: Option<&gst::TagList>, mode: gst::TagMergeMode) {
179 unsafe {
180 ffi::gst_audio_encoder_merge_tags(
181 self.as_ref().to_glib_none().0,
182 tags.to_glib_none().0,
183 mode.into_glib(),
184 );
185 }
186 }
187
188 #[doc(alias = "gst_audio_encoder_proxy_getcaps")]
189 fn proxy_getcaps(&self, caps: Option<&gst::Caps>, filter: Option<&gst::Caps>) -> gst::Caps {
190 unsafe {
191 from_glib_full(ffi::gst_audio_encoder_proxy_getcaps(
192 self.as_ref().to_glib_none().0,
193 caps.to_glib_none().0,
194 filter.to_glib_none().0,
195 ))
196 }
197 }
198
199 #[doc(alias = "gst_audio_encoder_set_allocation_caps")]
200 fn set_allocation_caps(&self, allocation_caps: Option<&gst::Caps>) {
201 unsafe {
202 ffi::gst_audio_encoder_set_allocation_caps(
203 self.as_ref().to_glib_none().0,
204 allocation_caps.to_glib_none().0,
205 );
206 }
207 }
208
209 #[doc(alias = "gst_audio_encoder_set_drainable")]
210 fn set_drainable(&self, enabled: bool) {
211 unsafe {
212 ffi::gst_audio_encoder_set_drainable(
213 self.as_ref().to_glib_none().0,
214 enabled.into_glib(),
215 );
216 }
217 }
218
219 #[doc(alias = "gst_audio_encoder_set_frame_max")]
220 fn set_frame_max(&self, num: i32) {
221 unsafe {
222 ffi::gst_audio_encoder_set_frame_max(self.as_ref().to_glib_none().0, num);
223 }
224 }
225
226 #[doc(alias = "gst_audio_encoder_set_frame_samples_max")]
227 fn set_frame_samples_max(&self, num: i32) {
228 unsafe {
229 ffi::gst_audio_encoder_set_frame_samples_max(self.as_ref().to_glib_none().0, num);
230 }
231 }
232
233 #[doc(alias = "gst_audio_encoder_set_frame_samples_min")]
234 fn set_frame_samples_min(&self, num: i32) {
235 unsafe {
236 ffi::gst_audio_encoder_set_frame_samples_min(self.as_ref().to_glib_none().0, num);
237 }
238 }
239
240 #[doc(alias = "gst_audio_encoder_set_hard_min")]
241 fn set_hard_min(&self, enabled: bool) {
242 unsafe {
243 ffi::gst_audio_encoder_set_hard_min(
244 self.as_ref().to_glib_none().0,
245 enabled.into_glib(),
246 );
247 }
248 }
249
250 #[doc(alias = "gst_audio_encoder_set_hard_resync")]
251 #[doc(alias = "hard-resync")]
252 fn set_hard_resync(&self, enabled: bool) {
253 unsafe {
254 ffi::gst_audio_encoder_set_hard_resync(
255 self.as_ref().to_glib_none().0,
256 enabled.into_glib(),
257 );
258 }
259 }
260
261 #[doc(alias = "gst_audio_encoder_set_latency")]
262 fn set_latency(&self, min: gst::ClockTime, max: impl Into<Option<gst::ClockTime>>) {
263 unsafe {
264 ffi::gst_audio_encoder_set_latency(
265 self.as_ref().to_glib_none().0,
266 min.into_glib(),
267 max.into().into_glib(),
268 );
269 }
270 }
271
272 #[doc(alias = "gst_audio_encoder_set_lookahead")]
273 fn set_lookahead(&self, num: i32) {
274 unsafe {
275 ffi::gst_audio_encoder_set_lookahead(self.as_ref().to_glib_none().0, num);
276 }
277 }
278
279 #[doc(alias = "gst_audio_encoder_set_mark_granule")]
280 fn set_mark_granule(&self, enabled: bool) {
281 unsafe {
282 ffi::gst_audio_encoder_set_mark_granule(
283 self.as_ref().to_glib_none().0,
284 enabled.into_glib(),
285 );
286 }
287 }
288
289 #[doc(alias = "gst_audio_encoder_set_perfect_timestamp")]
290 #[doc(alias = "perfect-timestamp")]
291 fn set_perfect_timestamp(&self, enabled: bool) {
292 unsafe {
293 ffi::gst_audio_encoder_set_perfect_timestamp(
294 self.as_ref().to_glib_none().0,
295 enabled.into_glib(),
296 );
297 }
298 }
299
300 #[doc(alias = "gst_audio_encoder_set_tolerance")]
301 #[doc(alias = "tolerance")]
302 fn set_tolerance(&self, tolerance: gst::ClockTime) {
303 unsafe {
304 ffi::gst_audio_encoder_set_tolerance(
305 self.as_ref().to_glib_none().0,
306 tolerance.into_glib(),
307 );
308 }
309 }
310
311 #[doc(alias = "hard-resync")]
312 fn connect_hard_resync_notify<F: Fn(&Self) + Send + Sync + 'static>(
313 &self,
314 f: F,
315 ) -> SignalHandlerId {
316 unsafe extern "C" fn notify_hard_resync_trampoline<
317 P: IsA<AudioEncoder>,
318 F: Fn(&P) + Send + Sync + 'static,
319 >(
320 this: *mut ffi::GstAudioEncoder,
321 _param_spec: glib::ffi::gpointer,
322 f: glib::ffi::gpointer,
323 ) {
324 let f: &F = &*(f as *const F);
325 f(AudioEncoder::from_glib_borrow(this).unsafe_cast_ref())
326 }
327 unsafe {
328 let f: Box_<F> = Box_::new(f);
329 connect_raw(
330 self.as_ptr() as *mut _,
331 b"notify::hard-resync\0".as_ptr() as *const _,
332 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
333 notify_hard_resync_trampoline::<Self, F> as *const (),
334 )),
335 Box_::into_raw(f),
336 )
337 }
338 }
339
340 #[doc(alias = "mark-granule")]
341 fn connect_mark_granule_notify<F: Fn(&Self) + Send + Sync + 'static>(
342 &self,
343 f: F,
344 ) -> SignalHandlerId {
345 unsafe extern "C" fn notify_mark_granule_trampoline<
346 P: IsA<AudioEncoder>,
347 F: Fn(&P) + Send + Sync + 'static,
348 >(
349 this: *mut ffi::GstAudioEncoder,
350 _param_spec: glib::ffi::gpointer,
351 f: glib::ffi::gpointer,
352 ) {
353 let f: &F = &*(f as *const F);
354 f(AudioEncoder::from_glib_borrow(this).unsafe_cast_ref())
355 }
356 unsafe {
357 let f: Box_<F> = Box_::new(f);
358 connect_raw(
359 self.as_ptr() as *mut _,
360 b"notify::mark-granule\0".as_ptr() as *const _,
361 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
362 notify_mark_granule_trampoline::<Self, F> as *const (),
363 )),
364 Box_::into_raw(f),
365 )
366 }
367 }
368
369 #[doc(alias = "perfect-timestamp")]
370 fn connect_perfect_timestamp_notify<F: Fn(&Self) + Send + Sync + 'static>(
371 &self,
372 f: F,
373 ) -> SignalHandlerId {
374 unsafe extern "C" fn notify_perfect_timestamp_trampoline<
375 P: IsA<AudioEncoder>,
376 F: Fn(&P) + Send + Sync + 'static,
377 >(
378 this: *mut ffi::GstAudioEncoder,
379 _param_spec: glib::ffi::gpointer,
380 f: glib::ffi::gpointer,
381 ) {
382 let f: &F = &*(f as *const F);
383 f(AudioEncoder::from_glib_borrow(this).unsafe_cast_ref())
384 }
385 unsafe {
386 let f: Box_<F> = Box_::new(f);
387 connect_raw(
388 self.as_ptr() as *mut _,
389 b"notify::perfect-timestamp\0".as_ptr() as *const _,
390 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
391 notify_perfect_timestamp_trampoline::<Self, F> as *const (),
392 )),
393 Box_::into_raw(f),
394 )
395 }
396 }
397
398 #[doc(alias = "tolerance")]
399 fn connect_tolerance_notify<F: Fn(&Self) + Send + Sync + 'static>(
400 &self,
401 f: F,
402 ) -> SignalHandlerId {
403 unsafe extern "C" fn notify_tolerance_trampoline<
404 P: IsA<AudioEncoder>,
405 F: Fn(&P) + Send + Sync + 'static,
406 >(
407 this: *mut ffi::GstAudioEncoder,
408 _param_spec: glib::ffi::gpointer,
409 f: glib::ffi::gpointer,
410 ) {
411 let f: &F = &*(f as *const F);
412 f(AudioEncoder::from_glib_borrow(this).unsafe_cast_ref())
413 }
414 unsafe {
415 let f: Box_<F> = Box_::new(f);
416 connect_raw(
417 self.as_ptr() as *mut _,
418 b"notify::tolerance\0".as_ptr() as *const _,
419 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
420 notify_tolerance_trampoline::<Self, F> as *const (),
421 )),
422 Box_::into_raw(f),
423 )
424 }
425 }
426}
427
428impl<O: IsA<AudioEncoder>> AudioEncoderExt for O {}
429