/

Ndilibdotnet2 Apr 2026

var recvSettings = new NDIlib.recv_create_v3_t

// Copy frame data (videoFrame.p_data, line_stride, etc.) // Don't forget to call NDIlib.recv_free_video_v2(receiver, ref videoFrame)

Console.WriteLine($"source.p_ndi_name @ source.ip_address");

NDIlib.destroy();

source_to_connect_to = selectedSource, color_format = NDIlib.recv_color_format_e.recv_color_format_RGBX_RGBA, bandwidth = NDIlib.recv_bandwidth_e.recv_bandwidth_highest, allow_video_fields = true ; IntPtr receiver = NDIlib.recv_create_v3(ref recvSettings); while (running)

var sendSettings = new NDIlib.send_create_t p_ndi_name = "TestSender" ; IntPtr sender = NDIlib.send_create(ref sendSettings);

// Your code here

4.1 Create a Sender var sendSettings = new NDIlib.send_create_t

You must manage pixel data marshaling (e.g., using byte[] pinned with GCHandle ). 5. Receiving Video (Receiver) 5.1 Find Sources var sources = NDIlib.find_get_current_sources(IntPtr findInstance); foreach (var source in sources)

// Simulate one frame int width = 1920, height = 1080; byte[] pixelData = new byte[width * height * 4]; // RGBA black GCHandle handle = GCHandle.Alloc(pixelData, GCHandleType.Pinned);

var frame = new NDIlib.video_frame_v2_t

var metadata = new NDIlib.metadata_frame_t p_data = "\"command\":\"tally\"" ; NDIlib.send_send_metadata(sender, ref metadata); Receive:

var recvSettings = new NDIlib.recv_create_v3_t

// Copy frame data (videoFrame.p_data, line_stride, etc.) // Don't forget to call NDIlib.recv_free_video_v2(receiver, ref videoFrame)

Console.WriteLine($"source.p_ndi_name @ source.ip_address");

NDIlib.destroy();

source_to_connect_to = selectedSource, color_format = NDIlib.recv_color_format_e.recv_color_format_RGBX_RGBA, bandwidth = NDIlib.recv_bandwidth_e.recv_bandwidth_highest, allow_video_fields = true ; IntPtr receiver = NDIlib.recv_create_v3(ref recvSettings); while (running)

var sendSettings = new NDIlib.send_create_t p_ndi_name = "TestSender" ; IntPtr sender = NDIlib.send_create(ref sendSettings);

// Your code here

4.1 Create a Sender var sendSettings = new NDIlib.send_create_t

You must manage pixel data marshaling (e.g., using byte[] pinned with GCHandle ). 5. Receiving Video (Receiver) 5.1 Find Sources var sources = NDIlib.find_get_current_sources(IntPtr findInstance); foreach (var source in sources)

// Simulate one frame int width = 1920, height = 1080; byte[] pixelData = new byte[width * height * 4]; // RGBA black GCHandle handle = GCHandle.Alloc(pixelData, GCHandleType.Pinned);

var frame = new NDIlib.video_frame_v2_t

var metadata = new NDIlib.metadata_frame_t p_data = "\"command\":\"tally\"" ; NDIlib.send_send_metadata(sender, ref metadata); Receive: