/// <summary>
            /// Sets the track of the audio sink.
            /// </summary>
            /// <param name="track">The track to use.</param>
            /// <returns>
            /// MLResult.Result will be <c>MLResult.Code.Ok</c> if destroying all handles was successful.
            /// MLResult.Result will be <c>MLResult.Code.WebRTCResultInstanceNotCreated</c> if MLWebRTC instance was not created.
            /// MLResult.Result will be <c>MLResult.Code.WebRTCResultMismatchingHandle</c> if an incorrect handle was sent.
            /// </returns>
            protected override MLResult SetTrack(MLWebRTC.MediaStream.Track track)
            {
#if PLATFORM_LUMIN
                ulong         sourceHandle = track != null ? track.Handle : MagicLeapNativeBindings.InvalidHandle;
                MLResult.Code resultCode   = NativeBindings.MLWebRTCAudioSinkSetSource(this.Handle, sourceHandle);
                DidNativeCallSucceed(resultCode, "MLWebRTCAudioSinkSetSource()");
                return(MLResult.Create(resultCode));
#else
                return(new MLResult());
#endif
            }
 /// <summary>
 /// Abstract method for setting the sink's track.
 /// </summary>
 /// <param name="track">The track to set the sink to.</param>
 /// <returns>
 /// MLResult.Result will be <c>MLResult.Code.Ok</c> if destroying all handles was successful.
 /// MLResult.Result will be <c>MLResult.Code.WebRTCResultInstanceNotCreated</c> if MLWebRTC instance was not created.
 /// MLResult.Result will be <c>MLResult.Code.WebRTCResultMismatchingHandle</c> if an incorrect handle was sent.
 /// </returns>
 protected abstract MLResult SetTrack(MLWebRTC.MediaStream.Track track);