using TeamsISO.Engine.Pipeline; namespace TeamsISO.Engine.Interop; /// /// Test seam over the NDI SDK. Production: P/Invoke shim. Tests: FakeNdiInterop. /// All methods are synchronous; the engine threads are responsible for orchestration. /// public interface INdiInterop { // ----- Discovery ----- NdiFindHandle CreateFinder(); /// Snapshots the currently-known sources visible to the finder. IReadOnlyList GetCurrentSources(NdiFindHandle finder); // ----- Receive ----- NdiReceiverHandle CreateReceiver(string sourceFullName); /// /// Blocks for up to waiting for a frame. /// Returns null on timeout. Returned ownership transfers to the caller. /// RawFrame? CaptureFrame(NdiReceiverHandle receiver, int timeoutMs); // ----- Send ----- NdiSenderHandle CreateSender(string outputName); void SendFrame(NdiSenderHandle sender, ProcessedFrame frame); // ----- Runtime probe ----- string GetRuntimeVersion(); }