private void DeckLinkInput_CaptureChanged(bool formatChanged) { logger.Debug("DeckLinkInput_StateChanged(...) " + deckLinkInput.State + " " + formatChanged); var state = deckLinkInput.State; if (formatChanged) { if (state == DeckLink.CaptureState.Starting) {// new format... AudioRendererArgs audioArgs = GetAudioRenderArgs(); VideoRendererArgs videoArgs = GetVideoRenderArgs(); renderSession?.Setup(videoArgs, audioArgs); OnCaptureInitialized(); } else if (state == DeckLink.CaptureState.Capturing) {// new format, restart media renderers... if (renderSession != null) { renderSession.Close(); AudioRendererArgs audioArgs = GetAudioRenderArgs(); VideoRendererArgs videoArgs = GetVideoRenderArgs(); renderSession.Setup(videoArgs, audioArgs); OnCaptureInitialized(); renderSession.Start(); } } } else { if (state == DeckLink.CaptureState.Capturing) { renderSession?.Start(); OnCaptureStarted(); } else if (state == DeckLink.CaptureState.Stopped) { errorCode = deckLinkInput.ErrorCode; deckLinkInput.Shutdown(); renderSession?.Close(); OnCaptureStopped(); } } }
private void InitRenderSession() { AudioRendererArgs audioArgs = null; if (deckLinkInput.AudioEnabled) { var sampleRate = deckLinkInput.AudioSampleRate; var bitsPerSample = deckLinkInput.AudioBitsPerSample; var channelsCount = deckLinkInput.AudioChannelsCount; audioArgs = new AudioRendererArgs { DeviceId = "", SampleRate = sampleRate, BitsPerSample = bitsPerSample, Channels = channelsCount, Encoding = MediaToolkit.Core.WaveEncodingTag.PCM, }; } var videoResoulution = deckLinkInput.FrameSize; var fourCC = deckLinkInput.VideoFormat.FourCC; var videoArgs = new VideoRendererArgs { hWnd = windowHandle, Resolution = videoResoulution, FourCC = fourCC, }; renderSession.Setup(videoArgs, audioArgs); deckLinkInput.VideoDataArrived += CurrentDevice_VideoDataArrived; deckLinkInput.AudioDataArrived += CurrentDevice_AudioDataArrived; syncContext.Send(_ => { ShowVideo(); }, null); }
private AudioRendererArgs GetAudioRenderArgs() { AudioRendererArgs audioArgs = null; if (deckLinkInput.AudioEnabled) { var sampleRate = deckLinkInput.AudioSampleRate; var bitsPerSample = deckLinkInput.AudioBitsPerSample; var channelsCount = deckLinkInput.AudioChannelsCount; audioArgs = new AudioRendererArgs { DeviceId = "", SampleRate = sampleRate, BitsPerSample = bitsPerSample, Channels = channelsCount, Encoding = MediaToolkit.Core.WaveEncodingTag.PCM, }; } return(audioArgs); }
private void buttonAudioSetup_Click(object sender, EventArgs e) { try { MMDevice device = null; var deviceEnum = new MMDeviceEnumerator(); if (deviceEnum.HasDefaultAudioEndpoint(DataFlow.Render, Role.Console)) { device = deviceEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console); } string deviceId = device.ID; NAudio.Wave.WaveFormat deviceFormat = device.AudioClient.MixFormat; device.Dispose(); signalGenerator = new SignalGenerator(16000, 2); var signalFormat = signalGenerator.WaveFormat; audioRenderer = new MfAudioRenderer(); AudioRendererArgs audioArgs = new AudioRendererArgs { DeviceId = "", SampleRate = signalFormat.SampleRate, BitsPerSample = signalFormat.BitsPerSample, Encoding = (WaveEncodingTag)signalFormat.Encoding, Channels = signalFormat.Channels, }; audioRenderer.Setup(audioArgs); } catch (Exception ex) { logger.Error(ex); } }