LTFAT_API int LTFAT_NAME(idgt_fb)(const LTFAT_COMPLEX* cin, const LTFAT_TYPE* g, ltfat_int L, ltfat_int gl, ltfat_int W, ltfat_int a, ltfat_int M, const ltfat_phaseconvention ptype, LTFAT_COMPLEX* f) { LTFAT_NAME(idgt_fb_plan)* plan = NULL; int status = LTFATERR_SUCCESS; CHECKSTATUS( LTFAT_NAME(idgt_fb_init)(g, gl, a, M, ptype, FFTW_ESTIMATE, &plan)); CHECKSTATUS( LTFAT_NAME(idgt_fb_execute)(plan, cin, L, W, f)); error: if (plan) LTFAT_NAME(idgt_fb_done)(&plan); return status; }
LTFAT_API int LTFAT_NAME(fft)(LTFAT_COMPLEX in[], ltfat_int L, ltfat_int W, LTFAT_COMPLEX out[]) { LTFAT_NAME(fft_plan)* p = NULL; int status = LTFATERR_SUCCESS; CHECKSTATUS( LTFAT_NAME(fft_init)(L, W, in, out, FFTW_ESTIMATE, &p)); LTFAT_NAME(fft_execute)(p); LTFAT_NAME(fft_done)(&p); error: return status; }
PHASERET_API int PHASERET_NAME(pghi)(const LTFAT_REAL s[], ltfat_int L, ltfat_int W, ltfat_int a, ltfat_int M, double gamma, LTFAT_COMPLEX c[]) { PHASERET_NAME(pghi_plan)* p = NULL; int status = LTFATERR_SUCCESS; CHECKNULL(s); CHECKNULL(c); CHECKSTATUS( PHASERET_NAME(pghi_init)( L, W, a, M, 1e-1, 1e-10, gamma, &p)); PHASERET_NAME(pghi_execute)(p, s, c); // This cannot fail PHASERET_NAME(pghi_done)(&p); error: return status; }
// Driver Entry NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { // Init NTSTATUS status; WDF_DRIVER_CONFIG config; WDF_OBJECT_ATTRIBUTES colAttributes; WDFDRIVER hDriver; DEBUG("Entry"); // Register this driver and its add dev method with the WDF WDF_DRIVER_CONFIG_INIT( &config, GFilterAddDevice); status = WdfDriverCreate( DriverObject, RegistryPath, WDF_NO_OBJECT_ATTRIBUTES, &config, &hDriver); CHECKSTATUS(status, ERROR("Unable to create driver object")); return(status); }