32 lines
1.1 KiB
C#
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();
|
|
}
|