From 81957351e10502a7b431d78c4c1fea62a17cef85 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Tue, 16 Sep 2014 14:26:45 -0700 Subject: [PATCH] Also directly connect audio pin for elgato --- DShowPlugin/DeviceSource.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/DShowPlugin/DeviceSource.cpp b/DShowPlugin/DeviceSource.cpp index 45548cd8e..7caf945ba 100644 --- a/DShowPlugin/DeviceSource.cpp +++ b/DShowPlugin/DeviceSource.cpp @@ -744,10 +744,24 @@ bool DeviceSource::LoadFilters() if(soundOutputType != 0) { - if(!bDeviceHasAudio) - bConnected = SUCCEEDED(err = capture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Audio, audioDeviceFilter, NULL, audioFilter)); + if (elgato && bDeviceHasAudio) + { + bConnected = false; + + IPin *audioPin = GetOutputPin(deviceFilter, &MEDIATYPE_Audio); + if (audioPin) + { + bConnected = SUCCEEDED(err = graph->ConnectDirect(audioPin, audioFilter->GetCapturePin(), nullptr)); + audioPin->Release(); + } + } else - bConnected = SUCCEEDED(err = capture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Audio, deviceFilter, NULL, audioFilter)); + { + if(!bDeviceHasAudio) + bConnected = SUCCEEDED(err = capture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Audio, audioDeviceFilter, NULL, audioFilter)); + else + bConnected = SUCCEEDED(err = capture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Audio, deviceFilter, NULL, audioFilter)); + } if(!bConnected) {