/// <summary> create the used COM components and get the interfaces. </summary> private bool GetInterfaces() { Logger.Instance.Debug("AirplayerAudioPlayer: Get interfaces"); int iStage = 1; string audioDevice; using (Settings xmlreader = new MPSettings()) audioDevice = xmlreader.GetValueAsString("audioplayer", "sounddevice", "Default DirectSound Device"); //If user has bass as default player the default device is named slightly differently if (audioDevice == "Default Sound Device") { audioDevice = "Default DirectSound Device"; } Logger.Instance.Debug("AirplayerAudioPlayer: Using audio device '{0}'", audioDevice); int hr; try { graphBuilder = (IGraphBuilder) new FilterGraph(); iStage = 5; Utils.AddFilterByName(graphBuilder, DirectShow.FilterCategory.AudioRendererCategory, audioDevice); var sourceFilter = new GenericPushSourceFilter(settings.Source, settings.GetMediaType()); hr = graphBuilder.AddFilter(sourceFilter, sourceFilter.Name); new HRESULT(hr).Throw(); DSFilter source2 = new DSFilter(sourceFilter); hr = source2.OutputPin.Render(); new HRESULT(hr).Throw(); if (hr != 0) { Error.SetError("Unable to play file", "Missing codecs to play this file"); return(false); } iStage = 6; mediaCtrl = (IMediaControl)graphBuilder; iStage = 7; mediaEvt = (IMediaEventEx)graphBuilder; iStage = 8; mediaSeek = (IMediaSeeking)graphBuilder; iStage = 9; mediaPos = (IMediaPosition)graphBuilder; iStage = 10; basicAudio = graphBuilder as IBasicAudio; iStage = 11; Logger.Instance.Debug("AirplayerAudioPlayer: Interfaces created"); return(true); } catch (Exception ex) { Logger.Instance.Info("Can not start {0} stage:{1} err:{2} stack:{3}", m_strCurrentFile, iStage, ex.Message, ex.StackTrace); return(false); } }
protected override void AddSourceFilter() { var sourceFilter = new GenericPushSourceFilter(settings.Source, settings.GetMediaType()); int hr = _graphBuilder.AddFilter(sourceFilter, sourceFilter.Name); new HRESULT(hr).Throw(); DSFilter source2 = new DSFilter(sourceFilter); hr = source2.OutputPin.Render(); new HRESULT(hr).Throw(); return; }
public void Start() { _graphBuilder = (IFilterGraph2) new FilterGraph(); _rot = new DsROTEntry(_graphBuilder); var sourceFilter = new GenericPushSourceFilter(source, GetMediaType()); int hr = _graphBuilder.AddFilter(sourceFilter, sourceFilter.Name); new HRESULT(hr).Throw(); DSFilter source2 = new DSFilter(sourceFilter); hr = source2.OutputPin.Render(); new HRESULT(hr).Throw(); IMediaControl mc = (IMediaControl)_graphBuilder; hr = mc.Run(); new HRESULT(hr).Throw(); }