#[cfg(any(feature = "doc", feature = "use_gpu"))]
mod ocl;
#[cfg(any(feature = "doc", feature = "use_gpu"))]
pub use self::ocl::*;
#[cfg(any(feature = "doc", not(feature = "use_gpu")))]
mod fallback;
#[cfg(any(feature = "doc", not(feature = "use_gpu")))]
pub use self::fallback::*;
use numbers::*;
use std::ops::Range;
pub trait GpuSupport<T: RealNumber> {
fn has_gpu_support() -> bool;
fn gpu_convolve_vector(
is_complex: bool,
source: &[T],
target: &mut [T],
imp_resp: &[T],
) -> Option<Range<usize>>;
fn is_supported_fft_len(is_complex: bool, len: usize) -> bool;
fn fft(is_complex: bool, source: &[T], target: &mut [T], reverse: bool);
fn overlap_discard(
x_time: &mut [T],
tmp: &mut [T],
x_freq: &mut [T],
h_freq: &[T],
imp_len: usize,
step_size: usize,
) -> usize;
}