The metadata part of the NDI SDK is unimplemented. The main use cases are tally messages. Since metadata can flow bi-directionally, both NDIOutput and VideoStreamNDI need to be able to send and receive metadata. An implementation would likely make use of
NDIOutput
NDIlib_send_send_metadata for sending general metadata
NDIlib_send_get_tally for getting the tally state
NDIlib_send_add_connection_metadata
NDIlib_send_clear_connection_metadata
VideoStreamNDI
NDIlib_recv_send_metadata for sending general metadata
NDIlib_recv_capture_v3 for receiving general metadata
NDIlib_recv_set_tally for setting the tally state
NDIlib_recv_add_connection_metadata
NDIlib_recv_clear_connection_metadata
These functions are documented in the SDK's header files under ndi/.
Exposing this functionality to VideoStreamNDI will be a challenge since the actual NDI Receiver lives in VideoStreamPlaybackNDI, which isn't accessible. To solve this, I'd consider passing a Ref of VideoStreamNDI to VideoStreamPlaybackNDI on instantiation.
This should be a low-level implementation that just exposes the API. XML parsing and such should be left to the user.
This issue serves as a rough implementation guideline for now, as I will not work on this within the near future, unless incentivized. So feel free to pick this up! (Just leave a little note here to indicate your intention to me and others)
The metadata part of the NDI SDK is unimplemented. The main use cases are tally messages. Since metadata can flow bi-directionally, both
NDIOutputandVideoStreamNDIneed to be able to send and receive metadata. An implementation would likely make use ofNDIOutput
NDIlib_send_send_metadatafor sending general metadataNDIlib_send_get_tallyfor getting the tally stateNDIlib_send_add_connection_metadataNDIlib_send_clear_connection_metadataVideoStreamNDI
NDIlib_recv_send_metadatafor sending general metadataNDIlib_recv_capture_v3for receiving general metadataNDIlib_recv_set_tallyfor setting the tally stateNDIlib_recv_add_connection_metadataNDIlib_recv_clear_connection_metadataThese functions are documented in the SDK's header files under
ndi/.Exposing this functionality to
VideoStreamNDIwill be a challenge since the actual NDI Receiver lives inVideoStreamPlaybackNDI, which isn't accessible. To solve this, I'd consider passing a Ref of VideoStreamNDI toVideoStreamPlaybackNDIon instantiation.This should be a low-level implementation that just exposes the API. XML parsing and such should be left to the user.
This issue serves as a rough implementation guideline for now, as I will not work on this within the near future, unless incentivized. So feel free to pick this up! (Just leave a little note here to indicate your intention to me and others)