You can send and receive custom metadata with NDI. The processing is frame-accurate as the metadata is attached to the frame objects.
To send the metadata, you should put the information to the current frame that you're going to send via NDI.
With MFormats SDK, you can add the metadata string with the following code line:
pFrame.MFStrSet("ndi.metadata_frame", strMetadata);
For MPlatform SDK, you should use the OnFrame event to access the frame and its data.
To get the metadata on the NDI receiver, you should use the MFStrGet method:
pFrame.MFStrGet("ndi.metadata_frame", out strMetadata);
For MFormats, you can process the current source frame with this method to get the metadata. With MPlatform, the conditions are the same - OnFrame event to access the frame data.