MiXiD API Reference: NDI

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;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for monitorPreviewView didUpdateSources. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmonitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didUpdateSources (NSArray<NSString *> *, sources)
Swift usageinstance.monitorPreviewView(monitorPreviewView: monitorView, didUpdateSources: "value")
monitorPreviewView:didChangeStatus:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didChangeStatus:(MXDNDIHXMonitorPreviewStatus)status;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for monitorPreviewView didChangeStatus. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmonitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didChangeStatus (MXDNDIHXMonitorPreviewStatus, status)
Swift usageinstance.monitorPreviewView(monitorPreviewView: monitorView, didChangeStatus: status)
monitorPreviewView:didFailWithMessage:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didFailWithMessage:(NSString *)message;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for monitorPreviewView didFailWithMessage. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmonitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didFailWithMessage (NSString *, message)
Swift usageinstance.monitorPreviewView(monitorPreviewView: monitorView, didFailWithMessage: "value")

MXDNDIHXMonitorPreviewViewOutputDelegate Protocol

monitorPreviewView:didOutputVideoFrame:presentationTime:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didOutputVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for monitorPreviewView didOutputVideoFrame presentationTime. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmonitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didOutputVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)
Swift usageinstance.monitorPreviewView(monitorPreviewView: monitorView, didOutputVideoFrame: imageBuffer, presentationTime: 0.0)
monitorPreviewView:didOutputAudioBuffer:
- (void)monitorPreviewView:(MXDNDIHXMonitorPreviewView *)monitorView didOutputAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for monitorPreviewView didOutputAudioBuffer. Implement this method to observe lifecycle, media output, status, or error events.
ParametersmonitorPreviewView (MXDNDIHXMonitorPreviewView *, monitorView); didOutputAudioBuffer (AVAudioPCMBuffer *, audioBuffer)
Swift usageinstance.monitorPreviewView(monitorPreviewView: monitorView, didOutputAudioBuffer: audioBuffer)

MXDNDIHXMonitorPreviewView

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for init. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersNo parameters.
Swift usagelet value = MXDNDIHXMonitorPreviewView()
startDiscovery
- (BOOL)startDiscovery;
KindInstance method
ReturnBOOL
DetailsPerforms the startDiscovery operation on this MiXiD component.
ParametersNo parameters.
Swift usagelet result = instance.startDiscovery()
stopDiscovery
- (void)stopDiscovery;
KindInstance method
Returnvoid
DetailsPerforms the stopDiscovery operation on this MiXiD component.
ParametersNo parameters.
Swift usageinstance.stopDiscovery()
connectToSourceNamed:
- (BOOL)connectToSourceNamed:(NSString *)sourceName;
KindInstance method
ReturnBOOL
DetailsConnects to a selected source or endpoint and starts receiving media when available.
ParametersconnectToSourceNamed (NSString *, sourceName)
Swift usagelet result = instance.connectToSourceNamed(connectToSourceNamed: "value")
connectToFirstAvailableSource
- (BOOL)connectToFirstAvailableSource;
KindInstance method
ReturnBOOL
DetailsConnects to a selected source or endpoint and starts receiving media when available.
ParametersNo parameters.
Swift usagelet result = instance.connectToFirstAvailableSource()
disconnect
- (void)disconnect;
KindInstance method
Returnvoid
DetailsDisconnects from the current source and stops receiving media from that connection.
ParametersNo parameters.
Swift usageinstance.disconnect()

MXDNDIStreamSender.h

NDI stream output component.

MXDNDIStreamSenderDelegate Protocol

ndiStreamSenderDidStart:
- (void)ndiStreamSenderDidStart:(MXDNDIStreamSender *)sender;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for ndiStreamSenderDidStart. Implement this method to observe lifecycle, media output, status, or error events.
ParametersndiStreamSenderDidStart (MXDNDIStreamSender *, sender)
Swift usageinstance.ndiStreamSenderDidStart(ndiStreamSenderDidStart: sender)
ndiStreamSenderDidStop:
- (void)ndiStreamSenderDidStop:(MXDNDIStreamSender *)sender;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for ndiStreamSenderDidStop. Implement this method to observe lifecycle, media output, status, or error events.
ParametersndiStreamSenderDidStop (MXDNDIStreamSender *, sender)
Swift usageinstance.ndiStreamSenderDidStop(ndiStreamSenderDidStop: sender)
ndiStreamSender:didFailWithError:
- (void)ndiStreamSender:(MXDNDIStreamSender *)sender didFailWithError:(NSError *)error;
KindDelegate / protocol callback
Returnvoid
DetailsCallback invoked by MiXiD for ndiStreamSender didFailWithError. Implement this method to observe lifecycle, media output, status, or error events.
ParametersndiStreamSender (MXDNDIStreamSender *, sender); didFailWithError (NSError *, error)
Swift usageinstance.ndiStreamSender(ndiStreamSender: sender, didFailWithError: nil)

MXDNDIStreamSender

NameDeclarationDetails
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;
KindInstance method
Returninstancetype
DetailsInitializes the receiver for initWithSourceName. Use this to provide required URLs, ports, names, peer connections, or configuration objects.
ParametersinitWithSourceName (NSString *, sourceName)
Swift usagelet value = MXDNDIStreamSender(initWithSourceName: "value")
start
- (void)start;
KindInstance method
Returnvoid
DetailsStarts the component and begins the related capture, server, playback, publish, recording, or discovery workflow.
ParametersNo parameters.
Swift usageinstance.start()
stop
- (void)stop;
KindInstance method
Returnvoid
DetailsStops the component and releases or finalizes active workflow resources.
ParametersNo parameters.
Swift usageinstance.stop()
appendVideoFrame:presentationTime:
- (void)appendVideoFrame:(CVImageBufferRef)imageBuffer presentationTime:(CMTime)presentationTime;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendVideoFrame (CVImageBufferRef, imageBuffer); presentationTime (CMTime, presentationTime)
Swift usageinstance.appendVideoFrame(appendVideoFrame: imageBuffer, presentationTime: 0.0)
appendAudioBuffer:
- (void)appendAudioBuffer:(AVAudioPCMBuffer *)audioBuffer;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendAudioBuffer (AVAudioPCMBuffer *, audioBuffer)
Swift usageinstance.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;
KindInstance method
Returnvoid
DetailsAppends media into the component. Use presentation timestamps and matching stream configuration so downstream encoders, mixers, or recorders stay synchronized.
ParametersappendAACAccessUnit (NSData *, accessUnit); sampleRate (Float64, sampleRate); channels (UInt32, channels); objectType (UInt32, objectType); config (NSData * _Nullable, config)
Swift usageinstance.appendAACAccessUnit(appendAACAccessUnit: data, sampleRate: 0.0, channels: channels, objectType: objectType, config: data)

Back to API Reference index