Back to MiXiD API Documentation
Detailed MiXiD XCFramework reference for NDI. Read through each header, class, protocol, and function section to inspect Objective-C declarations, parameters, return values, and usage guidance.
NDI Output Examples
Use MXDNDIStreamSender to publish the current MiXiD program feed as a discoverable NDI source on the local network.
Swift
final class NDIOutput: NSObject, MXDNDIStreamSenderDelegate {
private let sender = MXDNDIStreamSender(sourceName: "MiXiD Program")
override init() {
super.init()
sender.delegate = self
}
func start() { sender.start() }
func stop() { sender.stop() }
func appendVideoFrame(_ imageBuffer: CVImageBuffer, time: CMTime) {
sender.appendVideoFrame(imageBuffer, presentationTime: time)
}
func appendAudioBuffer(_ audioBuffer: AVAudioPCMBuffer) {
sender.appendAudioBuffer(audioBuffer)
}
func ndiStreamSenderDidStart(_ sender: MXDNDIStreamSender) {
print("NDI source is live: \(sender.sourceName)")
}
func ndiStreamSender(_ sender: MXDNDIStreamSender, didFailWithError error: Error) {
print("NDI failed: \(error)")
}
}
Objective-C
@interface NDIOutput : NSObject <MXDNDIStreamSenderDelegate>
@property (nonatomic, strong) MXDNDIStreamSender *sender;
@end
@implementation NDIOutput
- (instancetype)init {
self = [super init];
if (!self) { return nil; }
_sender = [[MXDNDIStreamSender alloc] initWithSourceName:@"MiXiD Program"];
_sender.delegate = self;
return self;
}
- (void)start { [self.sender start]; }
- (void)stop { [self.sender stop]; }
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer time:(CMTime)time {
[self.sender appendVideoFrame:imageBuffer presentationTime:time];
}
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer {
[self.sender appendAudioBuffer:audioBuffer];
}
- (void)ndiStreamSenderDidStart:(MXDNDIStreamSender *)sender {
NSLog(@"NDI source is live: %@", sender.sourceName);
}
- (void)ndiStreamSender:(MXDNDIStreamSender *)sender didFailWithError:(NSError *)error {
NSLog(@"NDI failed: %@", error);
}
@end
NDI
NDI
MXDNDIHXMonitorPreviewView.h
NDI HX discovery and receive component.
Enums
MXDNDIHXMonitorPreviewStatus
NDIHXMonitorPreviewStatusIdle = 0
NDIHXMonitorPreviewStatusDiscovering
NDIHXMonitorPreviewStatusConnecting
NDIHXMonitorPreviewStatusReceiving
NDIHXMonitorPreviewStatusNoVideo
NDIHXMonitorPreviewStatusError
MXDNDIHXMonitorPreviewViewDelegate Protocol
monitorPreviewView:didUpdateSources:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didUpdateSources:(NSArray<NSString *> *)sources;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for monitorPreviewView didUpdateSources. Implement this method to observe lifecycle, media output, status, or error events. Parameters monitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didUpdateSources (NSArray<NSString *> *, sources)Swift usage instance.monitorPreviewView(monitorPreviewView: monitorView, didUpdateSources: "value")
monitorPreviewView:didChangeStatus:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didChangeStatus:(MXDNDIHXMonitorPreviewStatus)status;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for monitorPreviewView didChangeStatus. Implement this method to observe lifecycle, media output, status, or error events. Parameters monitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didChangeStatus (MXDNDIHXMonitorPreviewStatus, status)Swift usage instance.monitorPreviewView(monitorPreviewView: monitorView, didChangeStatus: status)
monitorPreviewView:didFailWithMessage:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didFailWithMessage:(NSString *)message;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for monitorPreviewView didFailWithMessage. Implement this method to observe lifecycle, media output, status, or error events. Parameters monitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didFailWithMessage (NSString *, message)Swift usage instance.monitorPreviewView(monitorPreviewView: monitorView, didFailWithMessage: "value")
MXDNDIHXMonitorPreviewViewOutputDelegate Protocol
monitorPreviewView:didOutputVideoFrame:presentationTime:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for monitorPreviewView didOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events. Parameters monitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)Swift usage instance.monitorPreviewView(monitorPreviewView: monitorView, didOutputVideoFrame: imageBuffer, presentationTime: 0.0)
monitorPreviewView:didOutputAudioBuffer:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for monitorPreviewView didOutputAudioBuffer. Implement this method to observe lifecycle, media output, status, or error events. Parameters monitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer)Swift usage instance.monitorPreviewView(monitorPreviewView: monitorView, didOutputAudioBuffer: audioBuffer)
MXDNDIHXMonitorPreviewView
Name Declaration Details delegate@property (nonatomic, weak, nullable) id<MXDNDIHXMonitorPreviewViewDelegate> delegate;Receives lifecycle, media output, status, or error callbacks. outputDelegate@property (nonatomic, weak, nullable) id<MXDNDIHXMonitorPreviewViewOutputDelegate> outputDelegate;Receives lifecycle, media output, status, or error callbacks. availableSources@property (nonatomic, readonly) NSArray<NSString *> *availableSources;Public configuration or state exposed by this API. status@property (nonatomic, readonly) MXDNDIHXMonitorPreviewStatus status;Public configuration or state exposed by this API. connectedSourceName@property (nonatomic, copy, nullable, readonly) NSString *connectedSourceName;Public configuration or state exposed by this API. lowBandwidthMode@property (nonatomic) BOOL lowBandwidthMode;Video encoding or rendering configuration. muted@property (nonatomic) BOOL muted;Audio routing, mute, level, or gain configuration. discoveryRefreshInterval@property (nonatomic) NSTimeInterval discoveryRefreshInterval;Public configuration or state exposed by this API. videoTimeout@property (nonatomic) NSTimeInterval videoTimeout;Network transport reliability and buffering configuration. slotIndex@property (nonatomic) NSInteger slotIndex;Public configuration or state exposed by this API. bufferedOutputTiming@property (nonatomic) BOOL bufferedOutputTiming;Public configuration or state exposed by this API.
init
- (instancetype)init;
Kind Instance method Return instancetypeDetails Initializes the receiver for init. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters No parameters. Swift usage let value = MXDNDIHXMonitorPreviewView()
startDiscovery
- (BOOL)startDiscovery;
Kind Instance method Return BOOLDetails Performs the startDiscovery operation on this MiXiD component. Parameters No parameters. Swift usage let result = instance.startDiscovery()
stopDiscovery
- (void)stopDiscovery;
Kind Instance method Return voidDetails Performs the stopDiscovery operation on this MiXiD component. Parameters No parameters. Swift usage instance.stopDiscovery()
connectToSourceNamed:
- (BOOL)connectToSourceNamed:(NSString *)sourceName;
Kind Instance method Return BOOLDetails Connects to a selected source or endpoint and starts receiving media when available. Parameters connectToSourceNamed (NSString *, sourceName)Swift usage let result = instance.connectToSourceNamed(connectToSourceNamed: "value")
connectToFirstAvailableSource
- (BOOL)connectToFirstAvailableSource;
Kind Instance method Return BOOLDetails Connects to a selected source or endpoint and starts receiving media when available. Parameters No parameters. Swift usage let result = instance.connectToFirstAvailableSource()
disconnect
- (void)disconnect;
Kind Instance method Return voidDetails Disconnects from the current source and stops receiving media from that connection. Parameters No parameters. Swift usage instance.disconnect()
MXDNDIStreamSender.h
NDI stream output component.
MXDNDIStreamSenderDelegate Protocol
ndiStreamSenderDidStart:
- (void)ndiStreamSenderDidStart:(MXDNDIStreamSender *)sender;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for ndiStreamSenderDidStart. Implement this method to observe lifecycle, media output, status, or error events. Parameters ndiStreamSenderDidStart (MXDNDIStreamSender *, sender)Swift usage instance.ndiStreamSenderDidStart(ndiStreamSenderDidStart: sender)
ndiStreamSenderDidStop:
- (void)ndiStreamSenderDidStop:(MXDNDIStreamSender *)sender;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for ndiStreamSenderDidStop. Implement this method to observe lifecycle, media output, status, or error events. Parameters ndiStreamSenderDidStop (MXDNDIStreamSender *, sender)Swift usage instance.ndiStreamSenderDidStop(ndiStreamSenderDidStop: sender)
ndiStreamSender:didFailWithError:
- (void)ndiStreamSender:(MXDNDIStreamSender *)sender didFailWithError:(NSError *)error;
Kind Delegate / protocol callback Return voidDetails Callback invoked by MiXiD for ndiStreamSender didFailWithError. Implement this method to observe lifecycle, media output, status, or error events. Parameters ndiStreamSender (MXDNDIStreamSender *, sender); didFailWithError (NSError *, error)Swift usage instance.ndiStreamSender(ndiStreamSender: sender, didFailWithError: nil)
MXDNDIStreamSender
Name Declaration Details delegate@property (nonatomic, weak, nullable) id<MXDNDIStreamSenderDelegate> delegate;Receives lifecycle, media output, status, or error callbacks. sourceName@property (nonatomic, copy, readonly) NSString *sourceName;Public configuration or state exposed by this API. sending@property (nonatomic, assign, readonly, getter=isSending) BOOL sending;Public configuration or state exposed by this API.
initWithSourceName:
- (instancetype)initWithSourceName:(NSString *)sourceName;
Kind Instance method Return instancetypeDetails Initializes the receiver for initWithSourceName. Use this to provide required URLs, ports, names, peer connections, or configuration objects. Parameters initWithSourceName (NSString *, sourceName)Swift usage let value = MXDNDIStreamSender(initWithSourceName: "value")
start
- (void)start;
Kind Instance method Return voidDetails Starts the component and begins the related capture, server, playback, publish, recording, or discovery workflow. Parameters No parameters. Swift usage instance.start()
stop
- (void)stop;
Kind Instance method Return voidDetails Stops the component and releases or finalizes active workflow resources. Parameters No parameters. Swift usage instance.stop()
appendVideoFrame:presentationTime:
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)Swift usage instance.appendVideoFrame(appendVideoFrame: imageBuffer, presentationTime: 0.0)
appendAudioBuffer:
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendAudioBuffer (AVAudioPCMBuffer *, audioBuffer)Swift usage instance.appendAudioBuffer(appendAudioBuffer: audioBuffer)
appendAACAccessUnit:sampleRate:channels:objectType:config:
- (void)appendAACAccessUnit:(NSData *)accessUnit sampleRate:(Float64)sampleRate channels:(UInt32)channels objectType:(UInt32)objectType config:(NSData * _Nullable)config;
Kind Instance method Return voidDetails Appends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized. Parameters appendAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)Swift usage instance.appendAACAccessUnit(appendAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)
Back to API Reference index