gstreamer_audio/
audio_filter.rs
1use glib::{prelude::*, translate::*};
4use gst_base::prelude::*;
5
6use crate::{ffi, AudioFilter, AudioInfo};
7
8pub trait AudioFilterExtManual: IsA<AudioFilter> + 'static {
9 fn audio_info(&self) -> Option<AudioInfo> {
10 unsafe {
11 let ptr: &ffi::GstAudioFilter = &*(self.as_ptr() as *const _);
12 let sinkpad = self.as_ref().sink_pad();
13 let _guard = sinkpad.stream_lock();
14
15 let info = &ptr.info;
16
17 if !info.finfo.is_null() && info.channels > 0 && info.rate > 0 && info.bpf > 0 {
18 return None;
19 }
20 Some(from_glib_none(info as *const ffi::GstAudioInfo))
21 }
22 }
23}
24
25impl<O: IsA<AudioFilter>> AudioFilterExtManual for O {}