### Build and Install NDI FPGA Example Applications Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/c%2B%2B-application-code Navigate to the C++ source directory and use 'make' to build the applications. 'sudo make install' will install them to /usr/local/bin/ with setuid privileges. ```bash cd /fpga_reference_design/src/cpp make sudo make install ``` -------------------------------- ### C# Example for SSL API Calls Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api Demonstrates how to send GET and POST requests with SSL enabled, including the required API key in the header. ```csharp static async Task PostAsync(string uri, Dictionary values) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("x-api-key", API_KEY); var content = JsonContent.Create(values); var result = await client.PostAsync(uri, content); return await result.Content.ReadAsStringAsync(); } static async Task GetAsync(string uri) { var client = new HttpClient(); client.DefaultRequestHeaders.Add("x-api-key", API_KEY); var result = await client.GetAsync(uri); return await result.Content.ReadAsStringAsync(); } ``` -------------------------------- ### Dynamic Documentation Query Example Source: https://docs.ndi.video/all/developing-with-ndi/ndi-metadata/undocumented-mysteries To get more information not explicitly on a page, perform an HTTP GET request to the page URL with the 'ask' query parameter. The question should be specific and self-contained. ```http GET https://docs.ndi.video/all/developing-with-ndi/ndi-metadata/undocumented-mysteries.md?ask= ``` -------------------------------- ### Querying Documentation Example Source: https://docs.ndi.video/all/developing-with-ndi/ndi-metadata/proposed-new-metadata-messages To get additional information not directly on the page, perform an HTTP GET request with the 'ask' query parameter. The question should be specific and self-contained. ```http GET https://docs.ndi.video/all/developing-with-ndi/ndi-metadata/proposed-new-metadata-messages.md?ask= ``` -------------------------------- ### Query Documentation with Ask Parameter Source: https://docs.ndi.video/all/developing-with-ndi/ndi-certified/certification-process/testing-methods/interlaced-video-testing This example shows how to query the NDI documentation dynamically using the `ask` query parameter in an HTTP GET request. Replace `` with your specific query. ```http GET https://docs.ndi.video/all/developing-with-ndi/ndi-certified/certification-process/testing-methods/interlaced-video-testing.md?ask= ``` -------------------------------- ### Bridge Service Silent Installation Example Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/installation/silent-installation Use this command to perform a silent installation of the Bridge Service, specifying web interface, SSL, port, binding, and certificate. ```bash /verysilent /web=true /ssl=true /port=443 /binding=0.0.0.0 /cert=mycertificate.local ``` -------------------------------- ### Dynamic Documentation Query Example Source: https://docs.ndi.video/all/using-ndi/ndi-tools/release-notes Perform an HTTP GET request to query the documentation dynamically. Use the 'ask' query parameter with a specific, self-contained natural language question. The response will contain a direct answer and relevant excerpts. ```http GET https://docs.ndi.video/all/using-ndi/ndi-tools/release-notes.md?ask= ``` -------------------------------- ### Update Arty-Z7 SD Card for NDI Example Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/fpga-quick-start-guide These commands guide you through mounting the uSD card, copying the Arty-Z7 NDI encoder example files, and unmounting the card. This prepares the uSD for booting the Arty-Z7 board with the specified example. ```sh sudo mount /dev/sdx1 /mnt ``` ```sh sudo cp /mnt/Arty-Z7-20-Enc/* /mnt/ ``` ```sh sudo umount /mnt ``` -------------------------------- ### Start Recording Command Source: https://docs.ndi.video/all/developing-with-ndi/sdk/command-line-tools Send this XML command to stdin to start recording when using the -noautostart option. ```xml ``` -------------------------------- ### Host Start Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api Starts the host. Returns whether the operation succeeded. ```APIDOC ## Host Start ### Description Starts the host and returns if the operation succeeded or not. ### Method POST ### Endpoint `/api/host/start` ### Request Example ```json {} ``` ### Response #### Success Response (200) Indicates if the operation succeeded. ``` -------------------------------- ### Sender Event Monitoring Example Source: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor/ndi-sender-event-monitoring Example demonstrating how to create a sender listener, retrieve a list of advertised senders, subscribe to events for each sender, and unsubscribe when finished. ```APIDOC ```c // Create an instance of the sender listener. NDIlib_send_listener_instance_t pNDI_sender_listener = NDIlib_send_listener_create_ex(nullptr, p_ndi_config); if (!pNDI_sender_listener) { // Handle error } // Get the list of advertised senders. uint32_t num_senders = 0; const NDIlib_sender_t* p_senders = NDIlib_send_listener_get_senders(pNDI_sender_listener, &num_senders); // Display the found senders. printf("Network senders (%u found).\n", num_senders); for (uint32_t i = 0; i < num_senders; i++) { printf("%u. %s\n", i + 1, p_senders[i].p_name); // If the sender is not currently subscribed, subscribe to it. if (!p_senders[i].events_subscribed) { NDIlib_send_listener_subscribe_events(pNDI_sender_listener, p_senders[i].p_uuid); } // Perform operations with the subscribed sender... ... // Unsubscribe from the sender after processing. NDIlib_send_listener_unsubscribe_events(pNDI_sender_listener, p_senders[i].p_uuid); } ``` ``` -------------------------------- ### Query Documentation Dynamically via HTTP GET Source: https://docs.ndi.video/all/faq/ndi-tools/why-is-the-license-for-my-panasonic-camera-not-active To get more information not explicitly on the page, perform an HTTP GET request to the current page URL with the `ask` query parameter. The question should be specific and self-contained. ```http GET https://docs.ndi.video/all/faq/ndi-tools/why-is-the-license-for-my-panasonic-camera-not-active.md?ask= ``` -------------------------------- ### NDI Discovery Service JSON Configuration Example Source: https://docs.ndi.video/all/developing-with-ndi/sdk/command-line-tools An example of a JSON configuration file for the NDI Discovery Service, specifying binding address and port. ```json { "binding": "127.0.0.1", "port_no": "5959" } ``` -------------------------------- ### Start NDI Discovery Service on Windows Source: https://docs.ndi.video/all/developing-with-ndi/sdk/command-line-tools Command to start the NDI Discovery Service on Windows. Requires administrative privileges. ```bash “NDI Discovery Service.exe” start ``` -------------------------------- ### Query Documentation via GET Request Source: https://docs.ndi.video/all/faq/sdk/can-i-use-the-unreal-sdk-on-mac Perform an HTTP GET request to query documentation dynamically. Use this when information is not explicitly present or requires clarification. ```http GET https://docs.ndi.video/all/faq/sdk/can-i-use-the-unreal-sdk-on-mac.md?ask= ``` -------------------------------- ### Create NDI-Find Instance and List Sources Source: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-find This example demonstrates creating an NDI-FIND instance, waiting for network sources to appear or disappear, and then retrieving and printing the list of available sources. It uses a loop to continuously check for updates. ```c // Create the descriptor of the object to create NDIlib_find_create_t find_create; find_create.show_local_sources = true; find_create.p_groups = NULL; // Create the instance NDIlib_find_instance_t pFind = NDIlib_find_create_v2(&find_create); if (!pFind) /* Error */; while (true) // You would not loop forever of course ! { // Wait up till 5 seconds to check for new sources to be added or removed if (!NDIlib_find_wait_for_sources(pFind, 5000)) { // No new sources added! printf("No change to the sources found.\n"); } else { // Get the updated list of sources uint32_t no_sources = 0; const NDIlib_source_t* p_sources = NDIlib_find_get_current_sources(pFind, &no_sources); // Display all the sources. printf("Network sources (%u found).\n", no_sources); for (uint32_t i = 0; i < no_sources; i++) printf("%u. %s\n", i + 1, p_sources[i].p_ndi_name); } } // Destroy the finder when you’re all done finding things NDIlib_find_destroy(pFind); ``` -------------------------------- ### Example NDI Bridge Automation Commands Source: https://docs.ndi.video/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge/ndi-bridge-automation Illustrates common combinations of command-line arguments for automating NDI Bridge startup. Note that `/autostart` without a mode argument defaults to the last used mode. ```bash /local /autorun ``` ```bash /local /noui ``` -------------------------------- ### Import Hardware and Configure PetaLinux Project Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/linux-kernel-and-boot-loader Navigate into the created project directory and import the hardware definition. Replace `` with the actual path to your Vivado project's XSA file. ```bash $ cd $ petalinux-config --get-hw-description ``` -------------------------------- ### Auto Start Configuration Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api Get or set the auto-start mode for the Bridge Service. This determines whether the service starts in join or host mode upon service startup. The service must be restarted for changes to take effect. ```APIDOC ## Auto Start ### Description Get or set whether to start join or host on service start-up. Will always return the latest auto start value. The service must be restarted to reflect this change. ### Method GET, POST ### Endpoint `/api/auto_start` ### Parameters #### Request Body (POST) - **value** (String) - Required - 0, 1 or 2 where 0 = None, 1 = Host, and 2 = Join. If provided on a POST request, the Bridge Service auto start mode will be set. ### Request Example (POST) ```json { "value": "0" } ``` ### Response #### Success Response (200) - **success** (boolean) - Indicates if the operation was successful. - **error** (null) - Provides error details if the operation failed. - **content** (string) - The current auto-start value (0, 1, or 2). ``` -------------------------------- ### Example JSON Response Structure Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api All GET and POST requests return a JSON object with success, error, and content fields. ```json {"success":true,"error":null,"content":0} ``` -------------------------------- ### Full NDI Configuration Example Source: https://docs.ndi.video/all/getting-started/white-paper/configuration-files This example illustrates the hierarchical structure of NDI configuration settings, including vendor information, network parameters, group settings, source filtering, adapter allowances, transport protocols, and codec configurations. ```json { "ndi": { "vendor": { "name": "SKU LAST 4, Customer name first4,dateofissuance 6digits mmddyy", "id": "Generated License" }, "machinename": "MachineName", "send": { "metadata": "\u003cMy very cool source/\u003e" }, "networks": { "ips": "192.168.1.92,", "discovery": "65.52.14.139,65.52.14.138" }, "groups": { "send": "Public", "recv": "Public" }, "sourcefilter": { "regex": "MACHINE .*" }, "adapters": { "allowed": [ "10.28.2.10", "10.28.2.11" ] }, "tcp": { "recv": { "enable": true } }, "rudp": { "recv": { "enable": true } }, "unicast": { "recv": { "enable": true } }, "multicast": { "send": { "ttl": 1, "enable": false, "netmask": "255.255.0.0", "netprefix": "239.255.0.0" } }, "codec": { "shq": { "quality": 100, "mode": "auto" } }, "bridge": { "host": true, "join": false, "address": "127.0.0.1", "port": 5990, "secure": "123abc" } } } ``` -------------------------------- ### Switch Zybo-Z7 FPGA Example Designs Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/fpga-quick-start-guide Use these commands to copy the desired FPGA example design files to the /boot directory on the Zybo-Z7 board. After copying, reboot the board for the changes to take effect. ```sh sudo cp /boot/Zybo-Z7-20-Dec/* /boot/ ``` ```sh sudo cp /boot/Zybo-Z7-20-Enc/* /boot/ ``` ```sh sudo cp /boot/Zybo-Z7-20-Enc-Lite/* /boot/ ``` -------------------------------- ### NDI Discovery Service Management Source: https://docs.ndi.video/all/using-ndi/ndi-tools/ndi-tools-for-windows/discovery/discovery-server-additional-information These commands allow you to manage the NDI Discovery Service on Windows. You can install, remove, start, or stop the service from the command line. ```bash NDI Discovery.exe install ``` ```bash NDI Discovery.exe remove ``` ```bash NDI Discovery.exe start ``` ```bash NDI Discovery.exe stop ``` -------------------------------- ### NDI Bridge Command-Line Arguments Source: https://docs.ndi.video/all/using-ndi/ndi-tools/ndi-tools-for-windows/bridge/ndi-bridge-automation Use these arguments to launch NDI Bridge with specific modes and behaviors. For example, combine `/local` and `/autorun` to start in local mode and minimize the window. ```bash /verbose Generates extensive log entries in Windows Event Logs, with the event source labeled as "NDI Bridge." ``` ```bash /host Initiates Bridge in host mode. ``` ```bash /join Launches Bridge in join mode. ``` ```bash /local Starts Bridge in local mode. ``` ```bash /autorun Minimizes Bridge window upon startup. ``` ```bash /noui Suppresses the display of any user interface elements and prevents the creation of a taskbar icon. ``` -------------------------------- ### Switch to NDI Decode Example on Arria-10 SoC Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/fpga-quick-start-guide Copies the decode example boot files to the active boot configuration. Power must be cycled after this operation to reprogram the FPGA. ```sh sudo cp /boot/fit_spl_fpga_dec.itb /boot/fit_spl_fpga.itb ``` -------------------------------- ### Verify ZCU104 Board Files in Vivado Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-designs-old/ndi-fpga-reference-design/fpga-projects Use this Tcl command in the Vivado console to check the installed board file revision for ZCU104. Ensure it matches the required version for the example designs. ```tcl get_boards *zcu104* ``` -------------------------------- ### Build NDI uSD Image with Configuration Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/usd-image-builder Initiates the uSD image build process using the main build script and a specified configuration file. Ensure all build dependencies are met before execution. ```bash ./build.sh zcu104.conf ``` -------------------------------- ### Discover NDI Senders and Monitor Events (C#) Source: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor/ndi-sender-event-monitoring This C# example shows how to discover NDI senders and monitor their connection status using the NDI SDK. This requires the NDI SDK to be installed and referenced in your project. ```csharp using System; using System.Runtime.InteropServices; namespace NDISenderDiscovery { class Program { [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_initialize")] public static extern bool NDIlib_initialize(); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_find_create_v2")] public static extern IntPtr NDIlib_find_create_v2(); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_find_sources")] public static extern void NDIlib_find_sources(IntPtr pNDItypes, [Out] NDIlib_source_t[] pNDISource, int max_sources, int প্রাথমিক_timeout, ref int count); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_recv_create_v2")] public static extern IntPtr NDIlib_recv_create_v2(NDIlib_recv_settings_t settings); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_recv_connect")] public static extern bool NDIlib_recv_connect(IntPtr pNDIrecv, ref NDIlib_source_t pNDISource); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_find_destroy")] public static extern void NDIlib_find_destroy(IntPtr pNDItypes); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_recv_destroy")] public static extern void NDIlib_recv_destroy(IntPtr pNDIrecv); [DllImport("Processing.NDI.Lib.x64.dll", EntryPoint = "NDIlib_destroy")] public static extern void NDIlib_destroy(); public struct NDIlib_source_t { [MarshalAs(UnmanagedType.LPStr)] public string p_identifier; [MarshalAs(UnmanagedType.LPStr)] public string p_nickname; [MarshalAs(UnmanagedType.LPStr)] public string p_τητα; [MarshalAs(UnmanagedType.LPStr)] public string p_url_content_type; [MarshalAs(UnmanagedType.LPStr)] public string p_url_metadata; [MarshalAs(UnmanagedType.LPStr)] public string p_url_icon; [MarshalAs(UnmanagedType.LPStr)] public string p_ip_address; public int i_port_management; public int i_num_smpte; public int i_num_timecode; public int i_bandwidth; public int i_is_local; public int i_audio_rate; public int i_max_video_fps; public int i_max_audio_br; public int i_max_video_br; public int i_clock_rate; public int i_capabilities; public int i_reserved; } public struct NDIlib_recv_settings_t { public int show_only_live_sources; public int bandwidth; public int color_format; public int clock_rate; public int p_audio_rate; public int p_max_video_fps; public int p_max_audio_br; public int p_max_video_br; public int p_capabilities; public int p_reserved; } static void Main(string[] args) { // Initialize NDI library if (!NDIlib_initialize()) { Console.WriteLine("Failed to initialize NDI library."); return; } // Create a finder instance IntPtr pNDItypes = NDIlib_find_create_v2(); if (pNDItypes == IntPtr.Zero) { Console.WriteLine("Failed to create NDI finder."); NDIlib_destroy(); return; } NDIlib_source_t[] pNDISource = new NDIlib_source_t[10]; int count = 0; int timeout = 1000; // Find sources NDIlib_find_sources(pNDItypes, pNDISource, pNDISource.Length, timeout, ref count); Console.WriteLine($"Found {count} NDI sources."); // Connect to each source and process (example) for (int i = 0; i < count; ++i) { NDIlib_recv_settings_t settings = new NDIlib_recv_settings_t(); IntPtr pNDIrecv = NDIlib_recv_create_v2(settings); if (pNDIrecv != IntPtr.Zero) { if (NDIlib_recv_connect(pNDIrecv, ref pNDISource[i])) { Console.WriteLine($"Connected to: {pNDISource[i].p_nickname}"); // Here you would typically start receiving video, audio, etc. // NDIlib_recv_capture_v2(pNDIrecv, ...) } else { Console.WriteLine($"Failed to connect to: {pNDISource[i].p_nickname}"); } NDIlib_recv_destroy(pNDIrecv); } } // Clean up NDIlib_find_destroy(pNDItypes); NDIlib_destroy(); Console.WriteLine("NDI discovery and monitoring complete."); } } } ``` -------------------------------- ### Create and Use NDI Genlock Instance Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/genlock This example demonstrates how to create an NDI genlock instance, loop to wait for video frames, and check if the system is locked to the remote source or using the system clock. Ensure your vendor JSON is provided when creating the genlock instance. ```cpp // We are going to start by creating an NDI genlock instance NDIlib_source_t src_name(< Insert your NDI source here >); NDIlib_genlock_instance_t p_genlock = NDIlib_genlock_create(&src_name, NULL/* Note that your vendor JSON is required here */); // We are now going to loop and genlock to the signal at 59.94Hz while () { // Setup the frame header. NDIlib_video_frame_v2_t frame; frame.frame_rate_N = 60000; frame.frame_rate_D = 1001; frame.frame_format_type = NDIlib_frame_format_type_progressive; // We wait for a frame to send const bool genlock_locked = NDIlib_genlock_wait_video(p_genlock, &frame); printf("Send a frame, currently locked to %s.\n", genlock_locked ? "remote source" : "system clock"); } NDIlib_genlock_destroy(p_genlock); ``` -------------------------------- ### Wait for NDI Receivers and Get List Source: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-recv-discovery-monitor-and-control This example demonstrates how to create an NDI receiver listener, wait for changes in the list of available receivers using a timeout, and then retrieve and display the current list of receivers. The returned receiver list is only valid until the next call to get_receivers or destroy. Do not call get_receivers asynchronously. ```c // Create the descriptor of the object to create NDIlib_recv_listener_create_t listener_create; // The URL address of the discovery server to connect to listener_create.p_url_address = "127.0.0.1"; // Create an instance of the receiver listener NDIlib_recv_listener_instance_t pNDI_recv_listener = NDIlib_recv_listener_create(&listener_create); if (!pNDI_recv_listener) { return 0; // Handle error } // To remember the last connected state bool last_connected = false; while (true) { // You would not loop forever in a real application! // Check if the listener is currently connected bool curr_connected = NDIlib_recv_listener_is_connected(pNDI_recv_listener); // Has the connection state changed? if (last_connected != curr_connected) { printf("The listener is now %s.\n", curr_connected ? "connected" : "disconnected"); last_connected = curr_connected; } // Wait up to 5 seconds to check for new receivers if (!NDIlib_recv_listener_wait_for_receivers(pNDI_recv_listener, 5000)) { // No new receivers added printf("No change to the receivers found.\n"); } else { // Get the updated list of receivers uint32_t num_receivers = 0; const NDIlib_receiver_t* p_receivers = NDIlib_recv_listener_get_receivers(pNDI_recv_listener, &num_receivers); // Display all of the found receivers printf("Network receivers (%u found).\n", num_receivers); for (uint32_t i = 0; i != num_receivers; i++) { printf("%u. %s\n", i + 1, p_receivers[i].p_name); } } } // Destroy the receiver listener NDIlib_recv_listener_destroy(pNDI_recv_listener); ``` -------------------------------- ### Join Start Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api Starts the join operation. ```APIDOC ## POST /api/join/start ### Description Starts the join operation. ### Method POST ### Endpoint /api/join/start ### Request Example ```json {} ``` ### Response #### Success Response (200) Indicates whether the join operation succeeded. ``` -------------------------------- ### Full NDI JSON Configuration Example Source: https://docs.ndi.video/all/developing-with-ndi/sdk/configuration-files This example demonstrates the hierarchical structure of NDI configuration objects, including vendor, network, and transport settings. Some settings like 'vendor' are specific to the Advanced SDK. ```json { "ndi": { "vendor": { "name": "SKU LAST 4, Customer name first4,dateofissuance 6digits mmddyy", "id": "Generated License" }, "machinename": "MachineName", "send": { "metadata": "\u003cMy very cool source/\u003e" }, "networks": { "ips": "192.168.1.92,", "discovery": "65.52.14.139,65.52.14.138" }, "groups": { "send": "Public", "recv": "Public" }, "sourcefilter": { "regex": "MACHINE .*" }, "adapters": { "allowed": [ "10.28.2.10", "10.28.2.11" ] }, "tcp": { "recv": { "enable": true } }, "rudp": { "recv": { "enable": true } }, "unicast": { "recv": { "enable": true } }, "multicast": { "send": { "ttl": 1, "enable": false, "netmask": "255.255.0.0", "netprefix": "239.255.0.0" } }, "codec": { "shq": { "quality": 100, "mode": "auto" } }, "bridge": { "host": true, "join": false, "address": "127.0.0.1", "port": 5990, "secure": "123abc" ``` -------------------------------- ### Install Cross-Compiler for Debian/Ubuntu Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/linux-kernel-and-boot-loader Installs the necessary cross-compilers for aarch64 and armhf architectures on Debian-based systems. Ensure these are installed before building the kernel and bootloader. ```bash sudo apt-get install cpp-aarch64-linux-gnu sudo apt-get install gcc-arm-linux-gnueabihf ``` -------------------------------- ### Local Start Source: https://docs.ndi.video/all/developing-with-ndi/utilities/bridge-service/api Starts the local bridge and returns if the operation succeeded or not. ```APIDOC ## Local Start ### Description Starts the local bridge and returns if the operation succeeded or not. ### Method POST ### Endpoint `/api/local/start` ### Response #### Success Response (200) - **value** (String) - Confirmation message, e.g., "Local started." ``` -------------------------------- ### Switch to NDI Encode Example on Arria-10 SoC Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/fpga-quick-start-guide Copies the encode example boot files to the active boot configuration. Power must be cycled after this operation to reprogram the FPGA. ```sh sudo cp /boot/fit_spl_fpga_enc.itb /boot/fit_spl_fpga.itb ``` -------------------------------- ### Discover NDI Senders and Monitor Events (C++) Source: https://docs.ndi.video/all/developing-with-ndi/sdk/ndi-sender-discovery-and-monitor/ndi-sender-event-monitoring This C++ example demonstrates how to initialize the NDI library, find NDI senders, and monitor their connection status and other events. Ensure you have the NDI SDK properly linked. ```cpp #include int main() { // Not required for discovery, but always a good idea to initialize the library if (!NDIlib_initialize()) { // Something is wrong, cannot create a instance return 1; } // Create a finder NDIlib_find_instance_t pNDItypes = NDIlib_find_create_v2(); if (!pNDItypes) { NDIlib_destroy(); return 1; } // We want to find senders NDIlib_source_t pNDISource[10]; uint32_t count = 0; // Find sources NDIlib_find_sources(pNDItypes, pNDISource, 10, 1000, &count); // We have found some sources for (uint32_t i = 0; i < count; ++i) { // We can now connect to them NDIlib_recv_instance_t pNDIrecv = NDIlib_recv_create_v2(NDIlib_recv_settings_t()); NDIlib_recv_connect(pNDIrecv, &pNDISource[i]); // We can now receive video, audio, metadata, etc. // ... // Destroy the receiver NDIlib_recv_destroy(pNDIrecv); } // Destroy the finder NDIlib_find_destroy(pNDItypes); // Destroy the NDI library NDIlib_destroy(); return 0; } ``` -------------------------------- ### Query Documentation via HTTP GET Source: https://docs.ndi.video/all/faq/common-issues/im-having-issues-with-virtual-input-for-macos To get more information not directly on the page, make an HTTP GET request to the page URL with an 'ask' query parameter containing your question. ```http GET https://docs.ndi.video/all/faq/common-issues/im-having-issues-with-virtual-input-for-macos.md?ask= ``` -------------------------------- ### Chroot into Root Filesystem Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-advanced-sdk-fpga-example-reference-design/ndi-advanced-sdk-fpga-ip/usd-image-builder This example shows how to enter a chrooted environment within the root filesystem. This is useful for manually editing the rootfs or executing native commands within the context of the target system. Ensure the configuration file is sourced and the `ROOTFS` variable is set correctly. ```bash # Setup shell variables for our configuration source zcu104.conf # Open a native shell in the rootfs sudo LANG=C.UTF-8 chroot $ROOTFS /bin/bash ``` -------------------------------- ### Querying Documentation via HTTP GET Source: https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-sdk-review/finding To get additional information not present on the current page, perform an HTTP GET request with the 'ask' query parameter. The question should be specific and self-contained. ```http GET https://docs.ndi.video/all/developing-with-ndi/advanced-sdk/ndi-sdk-review/finding.md?ask= ``` -------------------------------- ### Query Documentation via HTTP GET Source: https://docs.ndi.video/all/using-ndi/ndi-tools/ndi-tools-for-mac/discovery/launch-discovery-server-using-command-line-for-macos To get additional information not present on the page, make an HTTP GET request to the current page URL with an 'ask' query parameter containing your question. ```http GET https://docs.ndi.video/all/using-ndi/ndi-tools/ndi-tools-for-mac/discovery/launch-discovery-server-using-command-line-for-macos.md?ask= ```