dragon-iso/src/TeamsISO.Engine/Interop/INdiInterop.cs
2026-05-07 15:12:36 +00:00

32 lines
1.1 KiB
C#

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