1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! Minimal reference APO: copies input samples straight to output.
//!
//! Builds as a Windows `cdylib`. The four standard COM in-process
//! server entry points (`DllGetClassObject`, `DllCanUnloadNow`,
//! `DllRegisterServer`, `DllUnregisterServer`) are emitted by
//! `tympan_apo::register_apo!` and resolve through the framework's
//! class factory.
//!
//! ## CLSID
//!
//! `{1B7E5A4F-3D2C-4E89-9C1A-6A6F40C92E11}` — fixed for the example
//! so Tier 3 CI can register it under a stable key.
//!
//! ## Build
//!
//! ```bash
//! cargo build --release --target x86_64-pc-windows-msvc \
//! --example passthrough
//! ```
//!
//! The output lands at
//! `target/x86_64-pc-windows-msvc/release/examples/passthrough.dll`.
//!
//! ## Use as a template
//!
//! Replace [`Passthrough::process`] with the desired DSP. The
//! framework's default `ProcessingObject::is_input_format_supported`
//! / `is_output_format_supported` already steer the negotiation
//! toward IEEE float32 — the bit depth the `&[f32]` / `&mut [f32]`
//! buffer parameters assume.
// `register_apo!` emits a `pub static` and several `#[no_mangle]`
// extern functions at the crate root. Examples build as cdylibs
// here, so unmangled symbols are exactly what we want.
use RealtimeContext;
use ;
/// Reference APO that emits its input verbatim.
;
register_apo!;