/// <summary> /// Starts the encoding process. /// </summary> /// <param name="encodingMode">The encoding profile to use.</param> /// <param name="bitrate">Bitrate in kbps. Ranges between 1000 and 20000.</param> public void StartStreaming(EncodingModeEntry encodingMode, int bitrate) { if (_isStreaming || tcpStreamHandler == null) { return; } if (bitrate < MinBitrate || bitrate > MaxBitrate) { return; } IBMDStreamingMutableVideoEncodingMode mutableVideoEncodingMode; encodingMode.encodingMode.CreateMutableVideoEncodingMode(out mutableVideoEncodingMode); mutableVideoEncodingMode.SetInt(_BMDStreamingEncodingModePropertyID.bmdStreamingEncodingPropertyVideoBitRateKbps, bitrate); streamingDeviceInput.SetVideoEncodingMode(mutableVideoEncodingMode); // Use tcp command to start (streamingDeviceInput.StartCapture() causes memory leak) tcpStreamHandler.StartReceiving(); _isStreaming = true; }