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();
}