I have a question. For capture video I can select a different camera and microphone and everythig is fine but for playback a video I need to set an output audio and I dont'n know how to do that.
My code look's like this:
IFilterGraph2 _previewGraph;
IFilterGraph2 _captureGraph;
IBaseFilter _advancedSystemFormatFileWriter;
IFileSinkFilter _filewriterSink;
ICaptureGraphBuilder2 _captureGraphBuilder;
_captureGraph = (IFilterGraph2)new FilterGraph();
_captureGraphBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
var hResult = _captureGraphBuilder.SetFiltergraph(_captureGraph);
Marshal.ThrowExceptionForHR(hResult);
stage++;
CaptureMediaControl = _captureGraph as IMediaControl;
_advancedSystemFormatFileWriter = (IBaseFilter)new WMAsfWriter();
hResult = _captureGraph.AddFilter(_advancedSystemFormatFileWriter, "WM ASF File Writer");
Marshal.ThrowExceptionForHR(hResult);
stage++;
_filewriterSink = _advancedSystemFormatFileWriter as IFileSinkFilter;
hResult = _filewriterSink.SetFileName(captureFilename, null);
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = BridgeController.InsertSourceFilter(_previewSinkFilter, _captureGraph, out _captureSourceFilter);
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = _captureGraph.AddFilter(_speakerCaptureFilter, "Audio Renderer");
Marshal.ThrowExceptionForHR(hResult);
//connect bridge output to file writer inputs
hResult = _captureGraph.Connect(
DsFindPin.ByDirection(_captureSourceFilter, PinDirection.Output, 0),
DsFindPin.ByName(_advancedSystemFormatFileWriter, "Video Input 01"));
Marshal.ThrowExceptionForHR(hResult);
stage++;
hResult = _captureGraph.Connect(
DsFindPin.ByDirection(_captureSourceFilter, PinDirection.Output, 1),
DsFindPin.ByName(_advancedSystemFormatFileWriter, "Audio Input 01"));
Marshal.ThrowExceptionForHR(hResult);
Where and how I can put an information about speaker?